<?xml version='1.0' encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <link href="cpip.css" rel="stylesheet" type="text/css" />
    <title>File: /Users/paulross/dev/linux/linux-3.13/include/linux/kernel.h</title>
  </head>
  <body>
    <h1>File: /Users/paulross/dev/linux/linux-3.13/include/linux/kernel.h</h1>
    <p>Green shading in the line number column
means the source is part of the translation unit, red means it is conditionally excluded.
Highlighted line numbers link to the translation unit page. Highlighted macros link to
the macro page.</p>
    <pre><a name="1" /><span class="Maybe">       1:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X0xJTlVYX0tFUk5FTF9IXzA_"><span class="b">_LINUX_KERNEL_H</span></a>
<a name="2" /><span class="Maybe">       2:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_X0xJTlVYX0tFUk5FTF9IXzA_"><span class="b">_LINUX_KERNEL_H</span></a>
<a name="3" /><span class="Maybe">       3:</span> 
<a name="4" /><span class="Maybe">       4:</span> 
<a name="5" /><span class="Maybe">       5:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">stdarg</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="6" /><span class="Maybe">       6:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">linkage</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="7" /><span class="Maybe">       7:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">stddef</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="8" /><span class="Maybe">       8:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">types</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="9" /><span class="Maybe">       9:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">compiler</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="10" /><span class="Maybe">      10:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">bitops</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="11" /><span class="Maybe">      11:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">log2</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="12" /><span class="Maybe">      12:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><a href="cpu.c_macros_ref.html#_dHlwZWNoZWNrXzA_"><span class="b">typecheck</span></a><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="13" /><span class="Maybe">      13:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">printk</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="14" /><span class="Maybe">      14:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">dynamic_debug</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="15" /><span class="Maybe">      15:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="m">asm</span><span class="f">/</span><span class="b">byteorder</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="16" /><span class="Maybe">      16:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">uapi</span><span class="f">/</span><span class="b">linux</span><span class="f">/</span><span class="b">kernel</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="17" /><span class="Maybe">      17:</span> 
<a name="18" /><span class="Maybe">      18:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_VVNIUlRfTUFYXzA_"><span class="b">USHRT_MAX</span></a>    <span class="f">(</span><span class="f">(</span><span class="b">u16</span><span class="f">)</span><span class="f">(</span><span class="f">~</span><span class="c">0U</span><span class="f">)</span><span class="f">)</span>
<a name="19" /><span class="Maybe">      19:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_U0hSVF9NQVhfMA__"><span class="b">SHRT_MAX</span></a>    <span class="f">(</span><span class="f">(</span><span class="b">s16</span><span class="f">)</span><span class="f">(</span><a href="cpu.c_macros_noref.html#_VVNIUlRfTUFYXzA_"><span class="b">USHRT_MAX</span></a><span class="f">&gt;&gt;</span><span class="c">1</span><span class="f">)</span><span class="f">)</span>
<a name="20" /><span class="Maybe">      20:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_U0hSVF9NSU5fMA__"><span class="b">SHRT_MIN</span></a>    <span class="f">(</span><span class="f">(</span><span class="b">s16</span><span class="f">)</span><span class="f">(</span><span class="f">-</span><a href="cpu.c_macros_noref.html#_U0hSVF9NQVhfMA__"><span class="b">SHRT_MAX</span></a> <span class="f">-</span> <span class="c">1</span><span class="f">)</span><span class="f">)</span>
<a name="21" /><span class="Maybe">      21:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_SU5UX01BWF8w"><span class="b">INT_MAX</span></a>        <span class="f">(</span><span class="f">(</span><span class="m">int</span><span class="f">)</span><span class="f">(</span><span class="f">~</span><span class="c">0U</span><span class="f">&gt;&gt;</span><span class="c">1</span><span class="f">)</span><span class="f">)</span>
<a name="22" /><span class="Maybe">      22:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_SU5UX01JTl8w"><span class="b">INT_MIN</span></a>        <span class="f">(</span><span class="f">-</span><a href="cpu.c_macros_ref.html#_SU5UX01BWF8w"><span class="b">INT_MAX</span></a> <span class="f">-</span> <span class="c">1</span><span class="f">)</span>
<a name="23" /><span class="Maybe">      23:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_VUlOVF9NQVhfMA__"><span class="b">UINT_MAX</span></a>    <span class="f">(</span><span class="f">~</span><span class="c">0U</span><span class="f">)</span>
<a name="24" /><span class="Maybe">      24:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_TE9OR19NQVhfMA__"><span class="b">LONG_MAX</span></a>    <span class="f">(</span><span class="f">(</span><span class="m">long</span><span class="f">)</span><span class="f">(</span><span class="f">~</span><span class="c">0UL</span><span class="f">&gt;&gt;</span><span class="c">1</span><span class="f">)</span><span class="f">)</span>
<a name="25" /><span class="Maybe">      25:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_TE9OR19NSU5fMA__"><span class="b">LONG_MIN</span></a>    <span class="f">(</span><span class="f">-</span><a href="cpu.c_macros_noref.html#_TE9OR19NQVhfMA__"><span class="b">LONG_MAX</span></a> <span class="f">-</span> <span class="c">1</span><span class="f">)</span>
<a name="26" /><span class="Maybe">      26:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_VUxPTkdfTUFYXzA_"><span class="b">ULONG_MAX</span></a>    <span class="f">(</span><span class="f">~</span><span class="c">0UL</span><span class="f">)</span>
<a name="27" /><span class="Maybe">      27:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_TExPTkdfTUFYXzA_"><span class="b">LLONG_MAX</span></a>    <span class="f">(</span><span class="f">(</span><span class="m">long</span> <span class="m">long</span><span class="f">)</span><span class="f">(</span><span class="f">~</span><span class="c">0ULL</span><span class="f">&gt;&gt;</span><span class="c">1</span><span class="f">)</span><span class="f">)</span>
<a name="28" /><span class="Maybe">      28:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_TExPTkdfTUlOXzA_"><span class="b">LLONG_MIN</span></a>    <span class="f">(</span><span class="f">-</span><a href="cpu.c_macros_noref.html#_TExPTkdfTUFYXzA_"><span class="b">LLONG_MAX</span></a> <span class="f">-</span> <span class="c">1</span><span class="f">)</span>
<a name="29" /><span class="Maybe">      29:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_VUxMT05HX01BWF8w"><span class="b">ULLONG_MAX</span></a>    <span class="f">(</span><span class="f">~</span><span class="c">0ULL</span><span class="f">)</span>
<a name="30" /><span class="Maybe">      30:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_U0laRV9NQVhfMA__"><span class="b">SIZE_MAX</span></a>    <span class="f">(</span><span class="f">~</span><span class="f">(</span><span class="b">size_t</span><span class="f">)</span><span class="c">0</span><span class="f">)</span>
<a name="31" /><span class="Maybe">      31:</span> 
<a name="32" /><span class="Maybe">      32:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_U1RBQ0tfTUFHSUNfMA__"><span class="b">STACK_MAGIC</span></a>    <span class="c">0xdeadbeef</span>
<a name="33" /><span class="Maybe">      33:</span> 
<a name="34" /><span class="Maybe">      34:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_UkVQRUFUX0JZVEVfMA__"><span class="b">REPEAT_BYTE</span></a><span class="f">(</span><span class="b">x</span><span class="f">)</span>    <span class="f">(</span><span class="f">(</span><span class="f">~</span><span class="c">0ul</span> <span class="f">/</span> <span class="c">0xff</span><span class="f">)</span> <span class="f">*</span> <span class="f">(</span><span class="b">x</span><span class="f">)</span><span class="f">)</span>
<a name="35" /><span class="Maybe">      35:</span> 
<a name="36" /><span class="Maybe">      36:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_QUxJR05fMA__"><span class="b">ALIGN</span></a><span class="f">(</span><span class="b">x</span><span class="f">,</span> <span class="b">a</span><span class="f">)</span>        <a href="cpu.c_macros_noref.html#_X19BTElHTl9LRVJORUxfMA__"><span class="b">__ALIGN_KERNEL</span></a><span class="f">(</span><span class="f">(</span><span class="b">x</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">a</span><span class="f">)</span><span class="f">)</span>
<a name="37" /><span class="Maybe">      37:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X19BTElHTl9NQVNLXzA_"><span class="b">__ALIGN_MASK</span></a><span class="f">(</span><span class="b">x</span><span class="f">,</span> <span class="b">mask</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X19BTElHTl9LRVJORUxfTUFTS18w"><span class="b">__ALIGN_KERNEL_MASK</span></a><span class="f">(</span><span class="f">(</span><span class="b">x</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">mask</span><span class="f">)</span><span class="f">)</span>
<a name="38" /><span class="Maybe">      38:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_UFRSX0FMSUdOXzA_"><span class="b">PTR_ALIGN</span></a><span class="f">(</span><span class="b">p</span><span class="f">,</span> <span class="b">a</span><span class="f">)</span>        <span class="f">(</span><span class="f">(</span><span class="b">typeof</span><span class="f">(</span><span class="b">p</span><span class="f">)</span><span class="f">)</span><a href="cpu.c_macros_noref.html#_QUxJR05fMA__"><span class="b">ALIGN</span></a><span class="f">(</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span><span class="f">)</span><span class="f">(</span><span class="b">p</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">a</span><span class="f">)</span><span class="f">)</span><span class="f">)</span>
<a name="39" /><span class="Maybe">      39:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_SVNfQUxJR05FRF8w"><span class="b">IS_ALIGNED</span></a><span class="f">(</span><span class="b">x</span><span class="f">,</span> <span class="b">a</span><span class="f">)</span>        <span class="f">(</span><span class="f">(</span><span class="f">(</span><span class="b">x</span><span class="f">)</span> <span class="f">&amp;</span> <span class="f">(</span><span class="f">(</span><span class="b">typeof</span><span class="f">(</span><span class="b">x</span><span class="f">)</span><span class="f">)</span><span class="f">(</span><span class="b">a</span><span class="f">)</span> <span class="f">-</span> <span class="c">1</span><span class="f">)</span><span class="f">)</span> <span class="f">==</span> <span class="c">0</span><span class="f">)</span>
<a name="40" /><span class="Maybe">      40:</span> 
<a name="41" /><span class="Maybe">      41:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_QVJSQVlfU0laRV8w"><span class="b">ARRAY_SIZE</span></a><span class="f">(</span><span class="b">arr</span><span class="f">)</span> <span class="f">(</span><span class="m">sizeof</span><span class="f">(</span><span class="b">arr</span><span class="f">)</span> <span class="f">/</span> <span class="m">sizeof</span><span class="f">(</span><span class="f">(</span><span class="b">arr</span><span class="f">)</span><span class="f">[</span><span class="c">0</span><span class="f">]</span><span class="f">)</span> <span class="f">+</span> <a href="cpu.c_macros_noref.html#_X19tdXN0X2JlX2FycmF5XzA_"><span class="b">__must_be_array</span></a><span class="f">(</span><span class="b">arr</span><span class="f">)</span><span class="f">)</span>
<a name="42" /><span class="Maybe">      42:</span> 
<a name="43" /><span class="Maybe">      43:</span> <span class="k">/*</span>
<a name="44" /><span class="Maybe">      44:</span> <span class="k"> * This looks more complex than it should be. But we need to</span>
<a name="45" /><span class="Maybe">      45:</span> <span class="k"> * get the type for the ~ right in round_down (it needs to be</span>
<a name="46" /><span class="Maybe">      46:</span> <span class="k"> * as wide as the result!), and we want to evaluate the macro</span>
<a name="47" /><span class="Maybe">      47:</span> <span class="k"> * arguments just once each.</span>
<a name="48" /><span class="Maybe">      48:</span> <span class="k"> */</span>
<a name="49" /><span class="Maybe">      49:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X19yb3VuZF9tYXNrXzA_"><span class="b">__round_mask</span></a><span class="f">(</span><span class="b">x</span><span class="f">,</span> <span class="b">y</span><span class="f">)</span> <span class="f">(</span><span class="f">(</span><span class="b">__typeof__</span><span class="f">(</span><span class="b">x</span><span class="f">)</span><span class="f">)</span><span class="f">(</span><span class="f">(</span><span class="b">y</span><span class="f">)</span><span class="f">-</span><span class="c">1</span><span class="f">)</span><span class="f">)</span>
<a name="50" /><span class="Maybe">      50:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_cm91bmRfdXBfMA__"><span class="b">round_up</span></a><span class="f">(</span><span class="b">x</span><span class="f">,</span> <span class="b">y</span><span class="f">)</span> <span class="f">(</span><span class="f">(</span><span class="f">(</span><span class="f">(</span><span class="b">x</span><span class="f">)</span><span class="f">-</span><span class="c">1</span><span class="f">)</span> <span class="f">|</span> <a href="cpu.c_macros_noref.html#_X19yb3VuZF9tYXNrXzA_"><span class="b">__round_mask</span></a><span class="f">(</span><span class="b">x</span><span class="f">,</span> <span class="b">y</span><span class="f">)</span><span class="f">)</span><span class="f">+</span><span class="c">1</span><span class="f">)</span>
<a name="51" /><span class="Maybe">      51:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_cm91bmRfZG93bl8w"><span class="b">round_down</span></a><span class="f">(</span><span class="b">x</span><span class="f">,</span> <span class="b">y</span><span class="f">)</span> <span class="f">(</span><span class="f">(</span><span class="b">x</span><span class="f">)</span> <span class="f">&amp;</span> <span class="f">~</span><a href="cpu.c_macros_noref.html#_X19yb3VuZF9tYXNrXzA_"><span class="b">__round_mask</span></a><span class="f">(</span><span class="b">x</span><span class="f">,</span> <span class="b">y</span><span class="f">)</span><span class="f">)</span>
<a name="52" /><span class="Maybe">      52:</span> 
<a name="53" /><span class="Maybe">      53:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_RklFTERfU0laRU9GXzA_"><span class="b">FIELD_SIZEOF</span></a><span class="f">(</span><span class="b">t</span><span class="f">,</span> <span class="b">f</span><span class="f">)</span> <span class="f">(</span><span class="m">sizeof</span><span class="f">(</span><span class="f">(</span><span class="f">(</span><span class="b">t</span><span class="f">*</span><span class="f">)</span><span class="c">0</span><span class="f">)</span><span class="f">-&gt;</span><span class="b">f</span><span class="f">)</span><span class="f">)</span>
<a name="54" /><span class="Maybe">      54:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_RElWX1JPVU5EX1VQXzA_"><span class="b">DIV_ROUND_UP</span></a><span class="f">(</span><span class="b">n</span><span class="f">,</span><span class="b">d</span><span class="f">)</span> <span class="f">(</span><span class="f">(</span><span class="f">(</span><span class="b">n</span><span class="f">)</span> <span class="f">+</span> <span class="f">(</span><span class="b">d</span><span class="f">)</span> <span class="f">-</span> <span class="c">1</span><span class="f">)</span> <span class="f">/</span> <span class="f">(</span><span class="b">d</span><span class="f">)</span><span class="f">)</span>
<a name="55" /><span class="Maybe">      55:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_RElWX1JPVU5EX1VQX1VMTF8w"><span class="b">DIV_ROUND_UP_ULL</span></a><span class="f">(</span><span class="b">ll</span><span class="f">,</span><span class="b">d</span><span class="f">)</span> \
<a name="56" /><span class="Maybe">      56:</span>     <span class="f">(</span><span class="f">{</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="m">long</span> <span class="b">_tmp</span> <span class="f">=</span> <span class="f">(</span><span class="b">ll</span><span class="f">)</span><span class="f">+</span><span class="f">(</span><span class="b">d</span><span class="f">)</span><span class="f">-</span><span class="c">1</span><span class="f">;</span> <a href="cpu.c_macros_ref.html#_ZG9fZGl2XzA_"><span class="b">do_div</span></a><span class="f">(</span><span class="b">_tmp</span><span class="f">,</span> <span class="b">d</span><span class="f">)</span><span class="f">;</span> <span class="b">_tmp</span><span class="f">;</span> <span class="f">}</span><span class="f">)</span>
<a name="57" /><span class="Maybe">      57:</span> 
<a name="58" /><span class="False">      58:</span> <span class="f">#</span><span class="n">if</span> <a href="cpu.c_macros_ref.html#_QklUU19QRVJfTE9OR18w"><span class="b">BITS_PER_LONG</span></a> <span class="f">==</span> <span class="c">32</span>
<a name="59" /><span class="False">      59:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_noref.html#_RElWX1JPVU5EX1VQX1NFQ1RPUl9UXzA_"><span class="b">DIV_ROUND_UP_SECTOR_T</span></a><span class="f">(</span><span class="b">ll</span><span class="f">,</span><span class="b">d</span><span class="f">)</span> <a href="cpu.c_macros_noref.html#_RElWX1JPVU5EX1VQX1VMTF8w"><span class="b">DIV_ROUND_UP_ULL</span></a><span class="f">(</span><span class="b">ll</span><span class="f">,</span> <span class="b">d</span><span class="f">)</span>
<a name="60" /><span class="Maybe">      60:</span> <span class="f">#</span><span class="n">else</span>
<a name="61" /><span class="Maybe">      61:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_noref.html#_RElWX1JPVU5EX1VQX1NFQ1RPUl9UXzA_"><span class="b">DIV_ROUND_UP_SECTOR_T</span></a><span class="f">(</span><span class="b">ll</span><span class="f">,</span><span class="b">d</span><span class="f">)</span> <a href="cpu.c_macros_ref.html#_RElWX1JPVU5EX1VQXzA_"><span class="b">DIV_ROUND_UP</span></a><span class="f">(</span><span class="b">ll</span><span class="f">,</span><span class="b">d</span><span class="f">)</span>
<a name="62" /><span class="Maybe">      62:</span> <span class="f">#</span><span class="n">endif</span>
<a name="63" /><span class="Maybe">      63:</span> 
<a name="64" /><span class="Maybe">      64:</span> <span class="k">/* The `const&apos; in roundup() prevents gcc-3.3 from calling __divdi3 */</span>
<a name="65" /><span class="Maybe">      65:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_cm91bmR1cF8w"><span class="b">roundup</span></a><span class="f">(</span><span class="b">x</span><span class="f">,</span> <span class="b">y</span><span class="f">)</span> <span class="f">(</span>                    \
<a name="66" /><span class="Maybe">      66:</span> <span class="f">{</span>                            \
<a name="67" /><span class="Maybe">      67:</span>     <span class="m">const</span> <span class="b">typeof</span><span class="f">(</span><span class="b">y</span><span class="f">)</span> <span class="b">__y</span> <span class="f">=</span> <span class="b">y</span><span class="f">;</span>            \
<a name="68" /><span class="Maybe">      68:</span>     <span class="f">(</span><span class="f">(</span><span class="f">(</span><span class="b">x</span><span class="f">)</span> <span class="f">+</span> <span class="f">(</span><span class="b">__y</span> <span class="f">-</span> <span class="c">1</span><span class="f">)</span><span class="f">)</span> <span class="f">/</span> <span class="b">__y</span><span class="f">)</span> <span class="f">*</span> <span class="b">__y</span><span class="f">;</span>        \
<a name="69" /><span class="Maybe">      69:</span> <span class="f">}</span>                            \
<a name="70" /><span class="Maybe">      70:</span> <span class="f">)</span>
<a name="71" /><span class="Maybe">      71:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_cm91bmRkb3duXzA_"><span class="b">rounddown</span></a><span class="f">(</span><span class="b">x</span><span class="f">,</span> <span class="b">y</span><span class="f">)</span> <span class="f">(</span>                \
<a name="72" /><span class="Maybe">      72:</span> <span class="f">{</span>                            \
<a name="73" /><span class="Maybe">      73:</span>     <span class="b">typeof</span><span class="f">(</span><span class="b">x</span><span class="f">)</span> <span class="b">__x</span> <span class="f">=</span> <span class="f">(</span><span class="b">x</span><span class="f">)</span><span class="f">;</span>                \
<a name="74" /><span class="Maybe">      74:</span>     <span class="b">__x</span> <span class="f">-</span> <span class="f">(</span><span class="b">__x</span> <span class="f">%</span> <span class="f">(</span><span class="b">y</span><span class="f">)</span><span class="f">)</span><span class="f">;</span>                \
<a name="75" /><span class="Maybe">      75:</span> <span class="f">}</span>                            \
<a name="76" /><span class="Maybe">      76:</span> <span class="f">)</span>
<a name="77" /><span class="Maybe">      77:</span> 
<a name="78" /><span class="Maybe">      78:</span> <span class="k">/*</span>
<a name="79" /><span class="Maybe">      79:</span> <span class="k"> * Divide positive or negative dividend by positive divisor and round</span>
<a name="80" /><span class="Maybe">      80:</span> <span class="k"> * to closest integer. Result is undefined for negative divisors and</span>
<a name="81" /><span class="Maybe">      81:</span> <span class="k"> * for negative dividends if the divisor variable type is unsigned.</span>
<a name="82" /><span class="Maybe">      82:</span> <span class="k"> */</span>
<a name="83" /><span class="Maybe">      83:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_RElWX1JPVU5EX0NMT1NFU1RfMA__"><span class="b">DIV_ROUND_CLOSEST</span></a><span class="f">(</span><span class="b">x</span><span class="f">,</span> <span class="b">divisor</span><span class="f">)</span><span class="f">(</span>            \
<a name="84" /><span class="Maybe">      84:</span> <span class="f">{</span>                            \
<a name="85" /><span class="Maybe">      85:</span>     <span class="b">typeof</span><span class="f">(</span><span class="b">x</span><span class="f">)</span> <span class="b">__x</span> <span class="f">=</span> <span class="b">x</span><span class="f">;</span>                \
<a name="86" /><span class="Maybe">      86:</span>     <span class="b">typeof</span><span class="f">(</span><span class="b">divisor</span><span class="f">)</span> <span class="b">__d</span> <span class="f">=</span> <span class="b">divisor</span><span class="f">;</span>            \
<a name="87" /><span class="Maybe">      87:</span>     <span class="f">(</span><span class="f">(</span><span class="f">(</span><span class="b">typeof</span><span class="f">(</span><span class="b">x</span><span class="f">)</span><span class="f">)</span><span class="f">-</span><span class="c">1</span><span class="f">)</span> <span class="f">&gt;</span> <span class="c">0</span> <span class="f">||</span>                \
<a name="88" /><span class="Maybe">      88:</span>      <span class="f">(</span><span class="f">(</span><span class="b">typeof</span><span class="f">(</span><span class="b">divisor</span><span class="f">)</span><span class="f">)</span><span class="f">-</span><span class="c">1</span><span class="f">)</span> <span class="f">&gt;</span> <span class="c">0</span> <span class="f">||</span> <span class="f">(</span><span class="b">__x</span><span class="f">)</span> <span class="f">&gt;</span> <span class="c">0</span><span class="f">)</span> <span class="f">?</span>    \
<a name="89" /><span class="Maybe">      89:</span>         <span class="f">(</span><span class="f">(</span><span class="f">(</span><span class="b">__x</span><span class="f">)</span> <span class="f">+</span> <span class="f">(</span><span class="f">(</span><span class="b">__d</span><span class="f">)</span> <span class="f">/</span> <span class="c">2</span><span class="f">)</span><span class="f">)</span> <span class="f">/</span> <span class="f">(</span><span class="b">__d</span><span class="f">)</span><span class="f">)</span> <span class="f">:</span>    \
<a name="90" /><span class="Maybe">      90:</span>         <span class="f">(</span><span class="f">(</span><span class="f">(</span><span class="b">__x</span><span class="f">)</span> <span class="f">-</span> <span class="f">(</span><span class="f">(</span><span class="b">__d</span><span class="f">)</span> <span class="f">/</span> <span class="c">2</span><span class="f">)</span><span class="f">)</span> <span class="f">/</span> <span class="f">(</span><span class="b">__d</span><span class="f">)</span><span class="f">)</span><span class="f">;</span>    \
<a name="91" /><span class="Maybe">      91:</span> <span class="f">}</span>                            \
<a name="92" /><span class="Maybe">      92:</span> <span class="f">)</span>
<a name="93" /><span class="Maybe">      93:</span> 
<a name="94" /><span class="Maybe">      94:</span> <span class="k">/*</span>
<a name="95" /><span class="Maybe">      95:</span> <span class="k"> * Multiplies an integer by a fraction, while avoiding unnecessary</span>
<a name="96" /><span class="Maybe">      96:</span> <span class="k"> * overflow or loss of precision.</span>
<a name="97" /><span class="Maybe">      97:</span> <span class="k"> */</span>
<a name="98" /><span class="Maybe">      98:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_bXVsdF9mcmFjXzA_"><span class="b">mult_frac</span></a><span class="f">(</span><span class="b">x</span><span class="f">,</span> <span class="b">numer</span><span class="f">,</span> <span class="b">denom</span><span class="f">)</span><span class="f">(</span>            \
<a name="99" /><span class="Maybe">      99:</span> <span class="f">{</span>                            \
<a name="100" /><span class="Maybe">     100:</span>     <span class="b">typeof</span><span class="f">(</span><span class="b">x</span><span class="f">)</span> <span class="b">quot</span> <span class="f">=</span> <span class="f">(</span><span class="b">x</span><span class="f">)</span> <span class="f">/</span> <span class="f">(</span><span class="b">denom</span><span class="f">)</span><span class="f">;</span>            \
<a name="101" /><span class="Maybe">     101:</span>     <span class="b">typeof</span><span class="f">(</span><span class="b">x</span><span class="f">)</span> <span class="b">rem</span>  <span class="f">=</span> <span class="f">(</span><span class="b">x</span><span class="f">)</span> <span class="f">%</span> <span class="f">(</span><span class="b">denom</span><span class="f">)</span><span class="f">;</span>            \
<a name="102" /><span class="Maybe">     102:</span>     <span class="f">(</span><span class="b">quot</span> <span class="f">*</span> <span class="f">(</span><span class="b">numer</span><span class="f">)</span><span class="f">)</span> <span class="f">+</span> <span class="f">(</span><span class="f">(</span><span class="b">rem</span> <span class="f">*</span> <span class="f">(</span><span class="b">numer</span><span class="f">)</span><span class="f">)</span> <span class="f">/</span> <span class="f">(</span><span class="b">denom</span><span class="f">)</span><span class="f">)</span><span class="f">;</span>    \
<a name="103" /><span class="Maybe">     103:</span> <span class="f">}</span>                            \
<a name="104" /><span class="Maybe">     104:</span> <span class="f">)</span>
<a name="105" /><span class="Maybe">     105:</span> 
<a name="106" /><span class="Maybe">     106:</span> 
<a name="107" /><span class="Maybe">     107:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_X1JFVF9JUF9fMA__"><span class="b">_RET_IP_</span></a>        <span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span><span class="f">)</span><span class="b">__builtin_return_address</span><span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="108" /><span class="Maybe">     108:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X1RISVNfSVBfXzA_"><span class="b">_THIS_IP_</span></a>  <span class="f">(</span><span class="f">{</span> <span class="b">__label__</span> <span class="b">__here</span><span class="f">;</span> <span class="b">__here</span><span class="f">:</span> <span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span><span class="f">)</span><span class="f">&amp;&amp;</span><span class="b">__here</span><span class="f">;</span> <span class="f">}</span><span class="f">)</span>
<a name="109" /><span class="Maybe">     109:</span> 
<a name="110" /><span class="False">     110:</span> <span class="f">#</span><span class="n">ifdef</span> <span class="b">CONFIG_LBDAF</span>
<a name="111" /><span class="False">     111:</span> <span class="f">#</span> <span class="n">include</span> <span class="f">&lt;</span><span class="m">asm</span><span class="f">/</span><span class="b">div64</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="112" /><span class="False">     112:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_noref.html#_c2VjdG9yX2Rpdl8w"><span class="b">sector_div</span></a><span class="f">(</span><span class="b">a</span><span class="f">,</span> <span class="b">b</span><span class="f">)</span> <a href="cpu.c_macros_ref.html#_ZG9fZGl2XzA_"><span class="b">do_div</span></a><span class="f">(</span><span class="b">a</span><span class="f">,</span> <span class="b">b</span><span class="f">)</span>
<a name="113" /><span class="Maybe">     113:</span> <span class="f">#</span><span class="n">else</span>
<a name="114" /><span class="Maybe">     114:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_noref.html#_c2VjdG9yX2Rpdl8w"><span class="b">sector_div</span></a><span class="f">(</span><span class="b">n</span><span class="f">,</span> <span class="b">b</span><span class="f">)</span><span class="f">(</span> \
<a name="115" /><span class="Maybe">     115:</span> <span class="f">{</span> \
<a name="116" /><span class="Maybe">     116:</span>     <span class="m">int</span> <span class="b">_res</span><span class="f">;</span> \
<a name="117" /><span class="Maybe">     117:</span>     <span class="b">_res</span> <span class="f">=</span> <span class="f">(</span><span class="b">n</span><span class="f">)</span> <span class="f">%</span> <span class="f">(</span><span class="b">b</span><span class="f">)</span><span class="f">;</span> \
<a name="118" /><span class="Maybe">     118:</span>     <span class="f">(</span><span class="b">n</span><span class="f">)</span> <span class="f">/=</span> <span class="f">(</span><span class="b">b</span><span class="f">)</span><span class="f">;</span> \
<a name="119" /><span class="Maybe">     119:</span>     <span class="b">_res</span><span class="f">;</span> \
<a name="120" /><span class="Maybe">     120:</span> <span class="f">}</span> \
<a name="121" /><span class="Maybe">     121:</span> <span class="f">)</span>
<a name="122" /><span class="Maybe">     122:</span> <span class="f">#</span><span class="n">endif</span>
<a name="123" /><span class="Maybe">     123:</span> 
<a name="124" /><span class="Maybe">     124:</span> <span class="k">/**</span>
<a name="125" /><span class="Maybe">     125:</span> <span class="k"> * upper_32_bits - return bits 32-63 of a number</span>
<a name="126" /><span class="Maybe">     126:</span> <span class="k"> * @n: the number we&apos;re accessing</span>
<a name="127" /><span class="Maybe">     127:</span> <span class="k"> *</span>
<a name="128" /><span class="Maybe">     128:</span> <span class="k"> * A basic shift-right of a 64- or 32-bit quantity.  Use this to suppress</span>
<a name="129" /><span class="Maybe">     129:</span> <span class="k"> * the &quot;right shift count &gt;= width of type&quot; warning when that quantity is</span>
<a name="130" /><span class="Maybe">     130:</span> <span class="k"> * 32-bits.</span>
<a name="131" /><span class="Maybe">     131:</span> <span class="k"> */</span>
<a name="132" /><span class="Maybe">     132:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_dXBwZXJfMzJfYml0c18w"><span class="b">upper_32_bits</span></a><span class="f">(</span><span class="b">n</span><span class="f">)</span> <span class="f">(</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_dTMyXzA_"><span class="b">u32</span></a><span class="f">)</span><span class="f">(</span><span class="f">(</span><span class="f">(</span><span class="b">n</span><span class="f">)</span> <span class="f">&gt;&gt;</span> <span class="c">16</span><span class="f">)</span> <span class="f">&gt;&gt;</span> <span class="c">16</span><span class="f">)</span><span class="f">)</span>
<a name="133" /><span class="Maybe">     133:</span> 
<a name="134" /><span class="Maybe">     134:</span> <span class="k">/**</span>
<a name="135" /><span class="Maybe">     135:</span> <span class="k"> * lower_32_bits - return bits 0-31 of a number</span>
<a name="136" /><span class="Maybe">     136:</span> <span class="k"> * @n: the number we&apos;re accessing</span>
<a name="137" /><span class="Maybe">     137:</span> <span class="k"> */</span>
<a name="138" /><span class="Maybe">     138:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_bG93ZXJfMzJfYml0c18w"><span class="b">lower_32_bits</span></a><span class="f">(</span><span class="b">n</span><span class="f">)</span> <span class="f">(</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_dTMyXzA_"><span class="b">u32</span></a><span class="f">)</span><span class="f">(</span><span class="b">n</span><span class="f">)</span><span class="f">)</span>
<a name="139" /><span class="Maybe">     139:</span> 
<a name="140" /><span class="Maybe">     140:</span> <span class="m">struct</span> <span class="b">completion</span><span class="f">;</span>
<a name="141" /><span class="Maybe">     141:</span> <span class="m">struct</span> <span class="b">pt_regs</span><span class="f">;</span>
<a name="142" /><span class="Maybe">     142:</span> <span class="m">struct</span> <span class="b">user</span><span class="f">;</span>
<a name="143" /><span class="Maybe">     143:</span> 
<a name="144" /><span class="Maybe">     144:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX1BSRUVNUFRfVk9MVU5UQVJZXzA_"><span class="b">CONFIG_PREEMPT_VOLUNTARY</span></a>
<a name="145" /><span class="Maybe">     145:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">_cond_resched</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="146" /><span class="Maybe">     146:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_ref.html#_bWlnaHRfcmVzY2hlZF8w"><span class="b">might_resched</span></a><span class="f">(</span><span class="f">)</span> <span class="b">_cond_resched</span><span class="f">(</span><span class="f">)</span>
<a name="147" /><span class="False">     147:</span> <span class="f">#</span><span class="n">else</span>
<a name="148" /><span class="False">     148:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_ref.html#_bWlnaHRfcmVzY2hlZF8w"><span class="b">might_resched</span></a><span class="f">(</span><span class="f">)</span> <span class="m">do</span> <span class="f">{</span> <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="149" /><span class="Maybe">     149:</span> <span class="f">#</span><span class="n">endif</span>
<a name="150" /><span class="Maybe">     150:</span> 
<a name="151" /><span class="False">     151:</span> <span class="f">#</span><span class="n">ifdef</span> <span class="b">CONFIG_DEBUG_ATOMIC_SLEEP</span>
<a name="152" /><span class="False">     152:</span>   <span class="m">void</span> <span class="b">__might_sleep</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">file</span><span class="f">,</span> <span class="m">int</span> <span class="b">line</span><span class="f">,</span> <span class="m">int</span> <span class="b">preempt_offset</span><span class="f">)</span><span class="f">;</span>
<a name="153" /><span class="False">     153:</span> <span class="k">/**</span>
<a name="154" /><span class="False">     154:</span> <span class="k"> * might_sleep - annotation for functions that can sleep</span>
<a name="155" /><span class="False">     155:</span> <span class="k"> *</span>
<a name="156" /><span class="False">     156:</span> <span class="k"> * this macro will print a stack trace if it is executed in an atomic</span>
<a name="157" /><span class="False">     157:</span> <span class="k"> * context (spinlock, irq-handler, ...).</span>
<a name="158" /><span class="False">     158:</span> <span class="k"> *</span>
<a name="159" /><span class="False">     159:</span> <span class="k"> * This is a useful debugging help to be able to catch problems early and not</span>
<a name="160" /><span class="False">     160:</span> <span class="k"> * be bitten later when the calling function happens to sleep when it is not</span>
<a name="161" /><span class="False">     161:</span> <span class="k"> * supposed to.</span>
<a name="162" /><span class="False">     162:</span> <span class="k"> */</span>
<a name="163" /><span class="False">     163:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_ref.html#_bWlnaHRfc2xlZXBfMA__"><span class="b">might_sleep</span></a><span class="f">(</span><span class="f">)</span> \
<a name="164" /><span class="False">     164:</span>     <span class="m">do</span> <span class="f">{</span> <span class="b">__might_sleep</span><span class="f">(</span><span class="b">__FILE__</span><span class="f">,</span> <span class="b">__LINE__</span><span class="f">,</span> <span class="c">0</span><span class="f">)</span><span class="f">;</span> <a href="cpu.c_macros_ref.html#_bWlnaHRfcmVzY2hlZF8w"><span class="b">might_resched</span></a><span class="f">(</span><span class="f">)</span><span class="f">;</span> <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="165" /><span class="Maybe">     165:</span> <span class="f">#</span><span class="n">else</span>
<a name="166" /><span class="Maybe">     166:</span>   <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">__might_sleep</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">file</span><span class="f">,</span> <span class="m">int</span> <span class="b">line</span><span class="f">,</span>
<a name="167" /><span class="Maybe">     167:</span>                    <span class="m">int</span> <span class="b">preempt_offset</span><span class="f">)</span> <span class="f">{</span> <span class="f">}</span>
<a name="168" /><span class="Maybe">     168:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_ref.html#_bWlnaHRfc2xlZXBfMA__"><span class="b">might_sleep</span></a><span class="f">(</span><span class="f">)</span> <span class="m">do</span> <span class="f">{</span> <a href="cpu.c_macros_ref.html#_bWlnaHRfcmVzY2hlZF8w"><span class="b">might_resched</span></a><span class="f">(</span><span class="f">)</span><span class="f">;</span> <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="169" /><span class="Maybe">     169:</span> <span class="f">#</span><span class="n">endif</span>
<a name="170" /><span class="Maybe">     170:</span> 
<a name="171" /><span class="Maybe">     171:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_bWlnaHRfc2xlZXBfaWZfMA__"><span class="b">might_sleep_if</span></a><span class="f">(</span><span class="b">cond</span><span class="f">)</span> <span class="m">do</span> <span class="f">{</span> <span class="m">if</span> <span class="f">(</span><span class="b">cond</span><span class="f">)</span> <a href="cpu.c_macros_ref.html#_bWlnaHRfc2xlZXBfMA__"><span class="b">might_sleep</span></a><span class="f">(</span><span class="f">)</span><span class="f">;</span> <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="172" /><span class="Maybe">     172:</span> 
<a name="173" /><span class="Maybe">     173:</span> <span class="k">/*</span>
<a name="174" /><span class="Maybe">     174:</span> <span class="k"> * abs() handles unsigned and signed longs, ints, shorts and chars.  For all</span>
<a name="175" /><span class="Maybe">     175:</span> <span class="k"> * input types abs() returns a signed long.</span>
<a name="176" /><span class="Maybe">     176:</span> <span class="k"> * abs() should not be used for 64-bit types (s64, u64, long long) - use abs64()</span>
<a name="177" /><span class="Maybe">     177:</span> <span class="k"> * for those.</span>
<a name="178" /><span class="Maybe">     178:</span> <span class="k"> */</span>
<a name="179" /><span class="Maybe">     179:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_YWJzXzA_"><span class="b">abs</span></a><span class="f">(</span><span class="b">x</span><span class="f">)</span> <span class="f">(</span><span class="f">{</span>                        \
<a name="180" /><span class="Maybe">     180:</span>         <span class="m">long</span> <span class="b">ret</span><span class="f">;</span>                    \
<a name="181" /><span class="Maybe">     181:</span>         <span class="m">if</span> <span class="f">(</span><span class="m">sizeof</span><span class="f">(</span><span class="b">x</span><span class="f">)</span> <span class="f">==</span> <span class="m">sizeof</span><span class="f">(</span><span class="m">long</span><span class="f">)</span><span class="f">)</span> <span class="f">{</span>        \
<a name="182" /><span class="Maybe">     182:</span>             <span class="m">long</span> <span class="b">__x</span> <span class="f">=</span> <span class="f">(</span><span class="b">x</span><span class="f">)</span><span class="f">;</span>                \
<a name="183" /><span class="Maybe">     183:</span>             <span class="b">ret</span> <span class="f">=</span> <span class="f">(</span><span class="b">__x</span> <span class="f">&lt;</span> <span class="c">0</span><span class="f">)</span> <span class="f">?</span> <span class="f">-</span><span class="b">__x</span> <span class="f">:</span> <span class="b">__x</span><span class="f">;</span>        \
<a name="184" /><span class="Maybe">     184:</span>         <span class="f">}</span> <span class="m">else</span> <span class="f">{</span>                    \
<a name="185" /><span class="Maybe">     185:</span>             <span class="m">int</span> <span class="b">__x</span> <span class="f">=</span> <span class="f">(</span><span class="b">x</span><span class="f">)</span><span class="f">;</span>                \
<a name="186" /><span class="Maybe">     186:</span>             <span class="b">ret</span> <span class="f">=</span> <span class="f">(</span><span class="b">__x</span> <span class="f">&lt;</span> <span class="c">0</span><span class="f">)</span> <span class="f">?</span> <span class="f">-</span><span class="b">__x</span> <span class="f">:</span> <span class="b">__x</span><span class="f">;</span>        \
<a name="187" /><span class="Maybe">     187:</span>         <span class="f">}</span>                        \
<a name="188" /><span class="Maybe">     188:</span>         <span class="b">ret</span><span class="f">;</span>                        \
<a name="189" /><span class="Maybe">     189:</span>     <span class="f">}</span><span class="f">)</span>
<a name="190" /><span class="Maybe">     190:</span> 
<a name="191" /><span class="Maybe">     191:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_YWJzNjRfMA__"><span class="b">abs64</span></a><span class="f">(</span><span class="b">x</span><span class="f">)</span> <span class="f">(</span><span class="f">{</span>                \
<a name="192" /><span class="Maybe">     192:</span>         <span class="b">s64</span> <span class="b">__x</span> <span class="f">=</span> <span class="f">(</span><span class="b">x</span><span class="f">)</span><span class="f">;</span>            \
<a name="193" /><span class="Maybe">     193:</span>         <span class="f">(</span><span class="b">__x</span> <span class="f">&lt;</span> <span class="c">0</span><span class="f">)</span> <span class="f">?</span> <span class="f">-</span><span class="b">__x</span> <span class="f">:</span> <span class="b">__x</span><span class="f">;</span>        \
<a name="194" /><span class="Maybe">     194:</span>     <span class="f">}</span><span class="f">)</span>
<a name="195" /><span class="Maybe">     195:</span> 
<a name="196" /><span class="False">     196:</span> <span class="f">#</span><span class="n">if</span> <span class="b">defined</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_Q09ORklHX01NVV8w"><span class="b">CONFIG_MMU</span></a><span class="f">)</span> <span class="f">&amp;&amp;</span> \
<a name="197" /><span class="False">     197:</span>     <span class="f">(</span><span class="b">defined</span><span class="f">(</span><span class="b">CONFIG_PROVE_LOCKING</span><span class="f">)</span> <span class="f">||</span> <span class="b">defined</span><span class="f">(</span><span class="b">CONFIG_DEBUG_ATOMIC_SLEEP</span><span class="f">)</span><span class="f">)</span>
<a name="198" /><span class="False">     198:</span> <span class="m">void</span> <span class="b">might_fault</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="199" /><span class="Maybe">     199:</span> <span class="f">#</span><span class="n">else</span>
<a name="200" /><span class="Maybe">     200:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">might_fault</span><span class="f">(</span><span class="m">void</span><span class="f">)</span> <span class="f">{</span> <span class="f">}</span>
<a name="201" /><span class="Maybe">     201:</span> <span class="f">#</span><span class="n">endif</span>
<a name="202" /><span class="Maybe">     202:</span> 
<a name="203" /><span class="Maybe">     203:</span> <span class="m">extern</span> <span class="m">struct</span> <span class="b">atomic_notifier_head</span> <span class="b">panic_notifier_list</span><span class="f">;</span>
<a name="204" /><span class="Maybe">     204:</span> <span class="m">extern</span> <span class="m">long</span> <span class="f">(</span><span class="f">*</span><span class="b">panic_blink</span><span class="f">)</span><span class="f">(</span><span class="m">int</span> <span class="b">state</span><span class="f">)</span><span class="f">;</span>
<a name="205" /><span class="Maybe">     205:</span> <a href="cpu.c_macros_ref.html#_X19wcmludGZfMA__"><span class="b">__printf</span></a><span class="f">(</span><span class="c">1</span><span class="f">,</span> <span class="c">2</span><span class="f">)</span>
<a name="206" /><span class="Maybe">     206:</span> <span class="m">void</span> <span class="b">panic</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">fmt</span><span class="f">,</span> <span class="f">...</span><span class="f">)</span>
<a name="207" /><span class="Maybe">     207:</span>     <a href="cpu.c_macros_ref.html#_X19ub3JldHVybl8w"><span class="b">__noreturn</span></a> <a href="cpu.c_macros_ref.html#_X19jb2xkXzA_"><span class="b">__cold</span></a><span class="f">;</span>
<a name="208" /><span class="Maybe">     208:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">oops_enter</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="209" /><span class="Maybe">     209:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">oops_exit</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="210" /><span class="Maybe">     210:</span> <span class="m">void</span> <span class="b">print_oops_end_marker</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="211" /><span class="Maybe">     211:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">oops_may_print</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="212" /><span class="Maybe">     212:</span> <span class="m">void</span> <span class="b">do_exit</span><span class="f">(</span><span class="m">long</span> <span class="b">error_code</span><span class="f">)</span>
<a name="213" /><span class="Maybe">     213:</span>     <a href="cpu.c_macros_ref.html#_X19ub3JldHVybl8w"><span class="b">__noreturn</span></a><span class="f">;</span>
<a name="214" /><span class="Maybe">     214:</span> <span class="m">void</span> <span class="b">complete_and_exit</span><span class="f">(</span><span class="m">struct</span> <span class="b">completion</span> <span class="f">*</span><span class="f">,</span> <span class="m">long</span><span class="f">)</span>
<a name="215" /><span class="Maybe">     215:</span>     <a href="cpu.c_macros_ref.html#_X19ub3JldHVybl8w"><span class="b">__noreturn</span></a><span class="f">;</span>
<a name="216" /><span class="Maybe">     216:</span> 
<a name="217" /><span class="Maybe">     217:</span> <span class="k">/* Internal, do not use. */</span>
<a name="218" /><span class="Maybe">     218:</span> <span class="m">int</span> <a href="cpu.c_macros_ref.html#_X19tdXN0X2NoZWNrXzE_"><span class="b">__must_check</span></a> <span class="b">_kstrtoul</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">s</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">base</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">res</span><span class="f">)</span><span class="f">;</span>
<a name="219" /><span class="Maybe">     219:</span> <span class="m">int</span> <a href="cpu.c_macros_ref.html#_X19tdXN0X2NoZWNrXzE_"><span class="b">__must_check</span></a> <span class="b">_kstrtol</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">s</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">base</span><span class="f">,</span> <span class="m">long</span> <span class="f">*</span><span class="b">res</span><span class="f">)</span><span class="f">;</span>
<a name="220" /><span class="Maybe">     220:</span> 
<a name="221" /><span class="Maybe">     221:</span> <span class="m">int</span> <a href="cpu.c_macros_ref.html#_X19tdXN0X2NoZWNrXzE_"><span class="b">__must_check</span></a> <span class="b">kstrtoull</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">s</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">base</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="m">long</span> <span class="f">*</span><span class="b">res</span><span class="f">)</span><span class="f">;</span>
<a name="222" /><span class="Maybe">     222:</span> <span class="m">int</span> <a href="cpu.c_macros_ref.html#_X19tdXN0X2NoZWNrXzE_"><span class="b">__must_check</span></a> <span class="b">kstrtoll</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">s</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">base</span><span class="f">,</span> <span class="m">long</span> <span class="m">long</span> <span class="f">*</span><span class="b">res</span><span class="f">)</span><span class="f">;</span>
<a name="223" /><span class="Maybe">     223:</span> 
<a name="224" /><span class="Maybe">     224:</span> <span class="k">/**</span>
<a name="225" /><span class="Maybe">     225:</span> <span class="k"> * kstrtoul - convert a string to an unsigned long</span>
<a name="226" /><span class="Maybe">     226:</span> <span class="k"> * @s: The start of the string. The string must be null-terminated, and may also</span>
<a name="227" /><span class="Maybe">     227:</span> <span class="k"> *  include a single newline before its terminating null. The first character</span>
<a name="228" /><span class="Maybe">     228:</span> <span class="k"> *  may also be a plus sign, but not a minus sign.</span>
<a name="229" /><span class="Maybe">     229:</span> <span class="k"> * @base: The number base to use. The maximum supported base is 16. If base is</span>
<a name="230" /><span class="Maybe">     230:</span> <span class="k"> *  given as 0, then the base of the string is automatically detected with the</span>
<a name="231" /><span class="Maybe">     231:</span> <span class="k"> *  conventional semantics - If it begins with 0x the number will be parsed as a</span>
<a name="232" /><span class="Maybe">     232:</span> <span class="k"> *  hexadecimal (case insensitive), if it otherwise begins with 0, it will be</span>
<a name="233" /><span class="Maybe">     233:</span> <span class="k"> *  parsed as an octal number. Otherwise it will be parsed as a decimal.</span>
<a name="234" /><span class="Maybe">     234:</span> <span class="k"> * @res: Where to write the result of the conversion on success.</span>
<a name="235" /><span class="Maybe">     235:</span> <span class="k"> *</span>
<a name="236" /><span class="Maybe">     236:</span> <span class="k"> * Returns 0 on success, -ERANGE on overflow and -EINVAL on parsing error.</span>
<a name="237" /><span class="Maybe">     237:</span> <span class="k"> * Used as a replacement for the obsolete simple_strtoull. Return code must</span>
<a name="238" /><span class="Maybe">     238:</span> <span class="k"> * be checked.</span>
<a name="239" /><span class="Maybe">     239:</span> <span class="k">*/</span>
<a name="240" /><span class="Maybe">     240:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <a href="cpu.c_macros_ref.html#_X19tdXN0X2NoZWNrXzE_"><span class="b">__must_check</span></a> <span class="b">kstrtoul</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">s</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">base</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">res</span><span class="f">)</span>
<a name="241" /><span class="Maybe">     241:</span> <span class="f">{</span>
<a name="242" /><span class="Maybe">     242:</span>     <span class="k">/*</span>
<a name="243" /><span class="Maybe">     243:</span> <span class="k">     * We want to shortcut function call, but</span>
<a name="244" /><span class="Maybe">     244:</span> <span class="k">     * __builtin_types_compatible_p(unsigned long, unsigned long long) = 0.</span>
<a name="245" /><span class="Maybe">     245:</span> <span class="k">     */</span>
<a name="246" /><span class="Maybe">     246:</span>     <span class="m">if</span> <span class="f">(</span><span class="m">sizeof</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span><span class="f">)</span> <span class="f">==</span> <span class="m">sizeof</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="m">long</span><span class="f">)</span> <span class="f">&amp;&amp;</span>
<a name="247" /><span class="Maybe">     247:</span>         <span class="b">__alignof__</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span><span class="f">)</span> <span class="f">==</span> <span class="b">__alignof__</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="m">long</span><span class="f">)</span><span class="f">)</span>
<a name="248" /><span class="Maybe">     248:</span>         <span class="m">return</span> <span class="b">kstrtoull</span><span class="f">(</span><span class="b">s</span><span class="f">,</span> <span class="b">base</span><span class="f">,</span> <span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="m">long</span> <span class="f">*</span><span class="f">)</span><span class="b">res</span><span class="f">)</span><span class="f">;</span>
<a name="249" /><span class="Maybe">     249:</span>     <span class="m">else</span>
<a name="250" /><span class="Maybe">     250:</span>         <span class="m">return</span> <span class="b">_kstrtoul</span><span class="f">(</span><span class="b">s</span><span class="f">,</span> <span class="b">base</span><span class="f">,</span> <span class="b">res</span><span class="f">)</span><span class="f">;</span>
<a name="251" /><span class="Maybe">     251:</span> <span class="f">}</span>
<a name="252" /><span class="Maybe">     252:</span> 
<a name="253" /><span class="Maybe">     253:</span> <span class="k">/**</span>
<a name="254" /><span class="Maybe">     254:</span> <span class="k"> * kstrtol - convert a string to a long</span>
<a name="255" /><span class="Maybe">     255:</span> <span class="k"> * @s: The start of the string. The string must be null-terminated, and may also</span>
<a name="256" /><span class="Maybe">     256:</span> <span class="k"> *  include a single newline before its terminating null. The first character</span>
<a name="257" /><span class="Maybe">     257:</span> <span class="k"> *  may also be a plus sign or a minus sign.</span>
<a name="258" /><span class="Maybe">     258:</span> <span class="k"> * @base: The number base to use. The maximum supported base is 16. If base is</span>
<a name="259" /><span class="Maybe">     259:</span> <span class="k"> *  given as 0, then the base of the string is automatically detected with the</span>
<a name="260" /><span class="Maybe">     260:</span> <span class="k"> *  conventional semantics - If it begins with 0x the number will be parsed as a</span>
<a name="261" /><span class="Maybe">     261:</span> <span class="k"> *  hexadecimal (case insensitive), if it otherwise begins with 0, it will be</span>
<a name="262" /><span class="Maybe">     262:</span> <span class="k"> *  parsed as an octal number. Otherwise it will be parsed as a decimal.</span>
<a name="263" /><span class="Maybe">     263:</span> <span class="k"> * @res: Where to write the result of the conversion on success.</span>
<a name="264" /><span class="Maybe">     264:</span> <span class="k"> *</span>
<a name="265" /><span class="Maybe">     265:</span> <span class="k"> * Returns 0 on success, -ERANGE on overflow and -EINVAL on parsing error.</span>
<a name="266" /><span class="Maybe">     266:</span> <span class="k"> * Used as a replacement for the obsolete simple_strtoull. Return code must</span>
<a name="267" /><span class="Maybe">     267:</span> <span class="k"> * be checked.</span>
<a name="268" /><span class="Maybe">     268:</span> <span class="k"> */</span>
<a name="269" /><span class="Maybe">     269:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <a href="cpu.c_macros_ref.html#_X19tdXN0X2NoZWNrXzE_"><span class="b">__must_check</span></a> <span class="b">kstrtol</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">s</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">base</span><span class="f">,</span> <span class="m">long</span> <span class="f">*</span><span class="b">res</span><span class="f">)</span>
<a name="270" /><span class="Maybe">     270:</span> <span class="f">{</span>
<a name="271" /><span class="Maybe">     271:</span>     <span class="k">/*</span>
<a name="272" /><span class="Maybe">     272:</span> <span class="k">     * We want to shortcut function call, but</span>
<a name="273" /><span class="Maybe">     273:</span> <span class="k">     * __builtin_types_compatible_p(long, long long) = 0.</span>
<a name="274" /><span class="Maybe">     274:</span> <span class="k">     */</span>
<a name="275" /><span class="Maybe">     275:</span>     <span class="m">if</span> <span class="f">(</span><span class="m">sizeof</span><span class="f">(</span><span class="m">long</span><span class="f">)</span> <span class="f">==</span> <span class="m">sizeof</span><span class="f">(</span><span class="m">long</span> <span class="m">long</span><span class="f">)</span> <span class="f">&amp;&amp;</span>
<a name="276" /><span class="Maybe">     276:</span>         <span class="b">__alignof__</span><span class="f">(</span><span class="m">long</span><span class="f">)</span> <span class="f">==</span> <span class="b">__alignof__</span><span class="f">(</span><span class="m">long</span> <span class="m">long</span><span class="f">)</span><span class="f">)</span>
<a name="277" /><span class="Maybe">     277:</span>         <span class="m">return</span> <span class="b">kstrtoll</span><span class="f">(</span><span class="b">s</span><span class="f">,</span> <span class="b">base</span><span class="f">,</span> <span class="f">(</span><span class="m">long</span> <span class="m">long</span> <span class="f">*</span><span class="f">)</span><span class="b">res</span><span class="f">)</span><span class="f">;</span>
<a name="278" /><span class="Maybe">     278:</span>     <span class="m">else</span>
<a name="279" /><span class="Maybe">     279:</span>         <span class="m">return</span> <span class="b">_kstrtol</span><span class="f">(</span><span class="b">s</span><span class="f">,</span> <span class="b">base</span><span class="f">,</span> <span class="b">res</span><span class="f">)</span><span class="f">;</span>
<a name="280" /><span class="Maybe">     280:</span> <span class="f">}</span>
<a name="281" /><span class="Maybe">     281:</span> 
<a name="282" /><span class="Maybe">     282:</span> <span class="m">int</span> <a href="cpu.c_macros_ref.html#_X19tdXN0X2NoZWNrXzE_"><span class="b">__must_check</span></a> <span class="b">kstrtouint</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">s</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">base</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="f">*</span><span class="b">res</span><span class="f">)</span><span class="f">;</span>
<a name="283" /><span class="Maybe">     283:</span> <span class="m">int</span> <a href="cpu.c_macros_ref.html#_X19tdXN0X2NoZWNrXzE_"><span class="b">__must_check</span></a> <span class="b">kstrtoint</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">s</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">base</span><span class="f">,</span> <span class="m">int</span> <span class="f">*</span><span class="b">res</span><span class="f">)</span><span class="f">;</span>
<a name="284" /><span class="Maybe">     284:</span> 
<a name="285" /><span class="Maybe">     285:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <a href="cpu.c_macros_ref.html#_X19tdXN0X2NoZWNrXzE_"><span class="b">__must_check</span></a> <span class="b">kstrtou64</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">s</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">base</span><span class="f">,</span> <span class="b">u64</span> <span class="f">*</span><span class="b">res</span><span class="f">)</span>
<a name="286" /><span class="Maybe">     286:</span> <span class="f">{</span>
<a name="287" /><span class="Maybe">     287:</span>     <span class="m">return</span> <span class="b">kstrtoull</span><span class="f">(</span><span class="b">s</span><span class="f">,</span> <span class="b">base</span><span class="f">,</span> <span class="b">res</span><span class="f">)</span><span class="f">;</span>
<a name="288" /><span class="Maybe">     288:</span> <span class="f">}</span>
<a name="289" /><span class="Maybe">     289:</span> 
<a name="290" /><span class="Maybe">     290:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <a href="cpu.c_macros_ref.html#_X19tdXN0X2NoZWNrXzE_"><span class="b">__must_check</span></a> <span class="b">kstrtos64</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">s</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">base</span><span class="f">,</span> <span class="b">s64</span> <span class="f">*</span><span class="b">res</span><span class="f">)</span>
<a name="291" /><span class="Maybe">     291:</span> <span class="f">{</span>
<a name="292" /><span class="Maybe">     292:</span>     <span class="m">return</span> <span class="b">kstrtoll</span><span class="f">(</span><span class="b">s</span><span class="f">,</span> <span class="b">base</span><span class="f">,</span> <span class="b">res</span><span class="f">)</span><span class="f">;</span>
<a name="293" /><span class="Maybe">     293:</span> <span class="f">}</span>
<a name="294" /><span class="Maybe">     294:</span> 
<a name="295" /><span class="Maybe">     295:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <a href="cpu.c_macros_ref.html#_X19tdXN0X2NoZWNrXzE_"><span class="b">__must_check</span></a> <span class="b">kstrtou32</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">s</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">base</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_dTMyXzA_"><span class="b">u32</span></a> <span class="f">*</span><span class="b">res</span><span class="f">)</span>
<a name="296" /><span class="Maybe">     296:</span> <span class="f">{</span>
<a name="297" /><span class="Maybe">     297:</span>     <span class="m">return</span> <span class="b">kstrtouint</span><span class="f">(</span><span class="b">s</span><span class="f">,</span> <span class="b">base</span><span class="f">,</span> <span class="b">res</span><span class="f">)</span><span class="f">;</span>
<a name="298" /><span class="Maybe">     298:</span> <span class="f">}</span>
<a name="299" /><span class="Maybe">     299:</span> 
<a name="300" /><span class="Maybe">     300:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <a href="cpu.c_macros_ref.html#_X19tdXN0X2NoZWNrXzE_"><span class="b">__must_check</span></a> <span class="b">kstrtos32</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">s</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">base</span><span class="f">,</span> <span class="b">s32</span> <span class="f">*</span><span class="b">res</span><span class="f">)</span>
<a name="301" /><span class="Maybe">     301:</span> <span class="f">{</span>
<a name="302" /><span class="Maybe">     302:</span>     <span class="m">return</span> <span class="b">kstrtoint</span><span class="f">(</span><span class="b">s</span><span class="f">,</span> <span class="b">base</span><span class="f">,</span> <span class="b">res</span><span class="f">)</span><span class="f">;</span>
<a name="303" /><span class="Maybe">     303:</span> <span class="f">}</span>
<a name="304" /><span class="Maybe">     304:</span> 
<a name="305" /><span class="Maybe">     305:</span> <span class="m">int</span> <a href="cpu.c_macros_ref.html#_X19tdXN0X2NoZWNrXzE_"><span class="b">__must_check</span></a> <span class="b">kstrtou16</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">s</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">base</span><span class="f">,</span> <span class="b">u16</span> <span class="f">*</span><span class="b">res</span><span class="f">)</span><span class="f">;</span>
<a name="306" /><span class="Maybe">     306:</span> <span class="m">int</span> <a href="cpu.c_macros_ref.html#_X19tdXN0X2NoZWNrXzE_"><span class="b">__must_check</span></a> <span class="b">kstrtos16</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">s</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">base</span><span class="f">,</span> <span class="b">s16</span> <span class="f">*</span><span class="b">res</span><span class="f">)</span><span class="f">;</span>
<a name="307" /><span class="Maybe">     307:</span> <span class="m">int</span> <a href="cpu.c_macros_ref.html#_X19tdXN0X2NoZWNrXzE_"><span class="b">__must_check</span></a> <span class="b">kstrtou8</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">s</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">base</span><span class="f">,</span> <span class="b">u8</span> <span class="f">*</span><span class="b">res</span><span class="f">)</span><span class="f">;</span>
<a name="308" /><span class="Maybe">     308:</span> <span class="m">int</span> <a href="cpu.c_macros_ref.html#_X19tdXN0X2NoZWNrXzE_"><span class="b">__must_check</span></a> <span class="b">kstrtos8</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">s</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">base</span><span class="f">,</span> <span class="b">s8</span> <span class="f">*</span><span class="b">res</span><span class="f">)</span><span class="f">;</span>
<a name="309" /><span class="Maybe">     309:</span> 
<a name="310" /><span class="Maybe">     310:</span> <span class="m">int</span> <a href="cpu.c_macros_ref.html#_X19tdXN0X2NoZWNrXzE_"><span class="b">__must_check</span></a> <span class="b">kstrtoull_from_user</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <a href="cpu.c_macros_ref.html#_X191c2VyXzA_"><span class="b">__user</span></a> <span class="f">*</span><span class="b">s</span><span class="f">,</span> <span class="b">size_t</span> <span class="b">count</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">base</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="m">long</span> <span class="f">*</span><span class="b">res</span><span class="f">)</span><span class="f">;</span>
<a name="311" /><span class="Maybe">     311:</span> <span class="m">int</span> <a href="cpu.c_macros_ref.html#_X19tdXN0X2NoZWNrXzE_"><span class="b">__must_check</span></a> <span class="b">kstrtoll_from_user</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <a href="cpu.c_macros_ref.html#_X191c2VyXzA_"><span class="b">__user</span></a> <span class="f">*</span><span class="b">s</span><span class="f">,</span> <span class="b">size_t</span> <span class="b">count</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">base</span><span class="f">,</span> <span class="m">long</span> <span class="m">long</span> <span class="f">*</span><span class="b">res</span><span class="f">)</span><span class="f">;</span>
<a name="312" /><span class="Maybe">     312:</span> <span class="m">int</span> <a href="cpu.c_macros_ref.html#_X19tdXN0X2NoZWNrXzE_"><span class="b">__must_check</span></a> <span class="b">kstrtoul_from_user</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <a href="cpu.c_macros_ref.html#_X191c2VyXzA_"><span class="b">__user</span></a> <span class="f">*</span><span class="b">s</span><span class="f">,</span> <span class="b">size_t</span> <span class="b">count</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">base</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">res</span><span class="f">)</span><span class="f">;</span>
<a name="313" /><span class="Maybe">     313:</span> <span class="m">int</span> <a href="cpu.c_macros_ref.html#_X19tdXN0X2NoZWNrXzE_"><span class="b">__must_check</span></a> <span class="b">kstrtol_from_user</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <a href="cpu.c_macros_ref.html#_X191c2VyXzA_"><span class="b">__user</span></a> <span class="f">*</span><span class="b">s</span><span class="f">,</span> <span class="b">size_t</span> <span class="b">count</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">base</span><span class="f">,</span> <span class="m">long</span> <span class="f">*</span><span class="b">res</span><span class="f">)</span><span class="f">;</span>
<a name="314" /><span class="Maybe">     314:</span> <span class="m">int</span> <a href="cpu.c_macros_ref.html#_X19tdXN0X2NoZWNrXzE_"><span class="b">__must_check</span></a> <span class="b">kstrtouint_from_user</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <a href="cpu.c_macros_ref.html#_X191c2VyXzA_"><span class="b">__user</span></a> <span class="f">*</span><span class="b">s</span><span class="f">,</span> <span class="b">size_t</span> <span class="b">count</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">base</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="f">*</span><span class="b">res</span><span class="f">)</span><span class="f">;</span>
<a name="315" /><span class="Maybe">     315:</span> <span class="m">int</span> <a href="cpu.c_macros_ref.html#_X19tdXN0X2NoZWNrXzE_"><span class="b">__must_check</span></a> <span class="b">kstrtoint_from_user</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <a href="cpu.c_macros_ref.html#_X191c2VyXzA_"><span class="b">__user</span></a> <span class="f">*</span><span class="b">s</span><span class="f">,</span> <span class="b">size_t</span> <span class="b">count</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">base</span><span class="f">,</span> <span class="m">int</span> <span class="f">*</span><span class="b">res</span><span class="f">)</span><span class="f">;</span>
<a name="316" /><span class="Maybe">     316:</span> <span class="m">int</span> <a href="cpu.c_macros_ref.html#_X19tdXN0X2NoZWNrXzE_"><span class="b">__must_check</span></a> <span class="b">kstrtou16_from_user</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <a href="cpu.c_macros_ref.html#_X191c2VyXzA_"><span class="b">__user</span></a> <span class="f">*</span><span class="b">s</span><span class="f">,</span> <span class="b">size_t</span> <span class="b">count</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">base</span><span class="f">,</span> <span class="b">u16</span> <span class="f">*</span><span class="b">res</span><span class="f">)</span><span class="f">;</span>
<a name="317" /><span class="Maybe">     317:</span> <span class="m">int</span> <a href="cpu.c_macros_ref.html#_X19tdXN0X2NoZWNrXzE_"><span class="b">__must_check</span></a> <span class="b">kstrtos16_from_user</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <a href="cpu.c_macros_ref.html#_X191c2VyXzA_"><span class="b">__user</span></a> <span class="f">*</span><span class="b">s</span><span class="f">,</span> <span class="b">size_t</span> <span class="b">count</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">base</span><span class="f">,</span> <span class="b">s16</span> <span class="f">*</span><span class="b">res</span><span class="f">)</span><span class="f">;</span>
<a name="318" /><span class="Maybe">     318:</span> <span class="m">int</span> <a href="cpu.c_macros_ref.html#_X19tdXN0X2NoZWNrXzE_"><span class="b">__must_check</span></a> <span class="b">kstrtou8_from_user</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <a href="cpu.c_macros_ref.html#_X191c2VyXzA_"><span class="b">__user</span></a> <span class="f">*</span><span class="b">s</span><span class="f">,</span> <span class="b">size_t</span> <span class="b">count</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">base</span><span class="f">,</span> <span class="b">u8</span> <span class="f">*</span><span class="b">res</span><span class="f">)</span><span class="f">;</span>
<a name="319" /><span class="Maybe">     319:</span> <span class="m">int</span> <a href="cpu.c_macros_ref.html#_X19tdXN0X2NoZWNrXzE_"><span class="b">__must_check</span></a> <span class="b">kstrtos8_from_user</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <a href="cpu.c_macros_ref.html#_X191c2VyXzA_"><span class="b">__user</span></a> <span class="f">*</span><span class="b">s</span><span class="f">,</span> <span class="b">size_t</span> <span class="b">count</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">base</span><span class="f">,</span> <span class="b">s8</span> <span class="f">*</span><span class="b">res</span><span class="f">)</span><span class="f">;</span>
<a name="320" /><span class="Maybe">     320:</span> 
<a name="321" /><span class="Maybe">     321:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <a href="cpu.c_macros_ref.html#_X19tdXN0X2NoZWNrXzE_"><span class="b">__must_check</span></a> <span class="b">kstrtou64_from_user</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <a href="cpu.c_macros_ref.html#_X191c2VyXzA_"><span class="b">__user</span></a> <span class="f">*</span><span class="b">s</span><span class="f">,</span> <span class="b">size_t</span> <span class="b">count</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">base</span><span class="f">,</span> <span class="b">u64</span> <span class="f">*</span><span class="b">res</span><span class="f">)</span>
<a name="322" /><span class="Maybe">     322:</span> <span class="f">{</span>
<a name="323" /><span class="Maybe">     323:</span>     <span class="m">return</span> <span class="b">kstrtoull_from_user</span><span class="f">(</span><span class="b">s</span><span class="f">,</span> <span class="b">count</span><span class="f">,</span> <span class="b">base</span><span class="f">,</span> <span class="b">res</span><span class="f">)</span><span class="f">;</span>
<a name="324" /><span class="Maybe">     324:</span> <span class="f">}</span>
<a name="325" /><span class="Maybe">     325:</span> 
<a name="326" /><span class="Maybe">     326:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <a href="cpu.c_macros_ref.html#_X19tdXN0X2NoZWNrXzE_"><span class="b">__must_check</span></a> <span class="b">kstrtos64_from_user</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <a href="cpu.c_macros_ref.html#_X191c2VyXzA_"><span class="b">__user</span></a> <span class="f">*</span><span class="b">s</span><span class="f">,</span> <span class="b">size_t</span> <span class="b">count</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">base</span><span class="f">,</span> <span class="b">s64</span> <span class="f">*</span><span class="b">res</span><span class="f">)</span>
<a name="327" /><span class="Maybe">     327:</span> <span class="f">{</span>
<a name="328" /><span class="Maybe">     328:</span>     <span class="m">return</span> <span class="b">kstrtoll_from_user</span><span class="f">(</span><span class="b">s</span><span class="f">,</span> <span class="b">count</span><span class="f">,</span> <span class="b">base</span><span class="f">,</span> <span class="b">res</span><span class="f">)</span><span class="f">;</span>
<a name="329" /><span class="Maybe">     329:</span> <span class="f">}</span>
<a name="330" /><span class="Maybe">     330:</span> 
<a name="331" /><span class="Maybe">     331:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <a href="cpu.c_macros_ref.html#_X19tdXN0X2NoZWNrXzE_"><span class="b">__must_check</span></a> <span class="b">kstrtou32_from_user</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <a href="cpu.c_macros_ref.html#_X191c2VyXzA_"><span class="b">__user</span></a> <span class="f">*</span><span class="b">s</span><span class="f">,</span> <span class="b">size_t</span> <span class="b">count</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">base</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_dTMyXzA_"><span class="b">u32</span></a> <span class="f">*</span><span class="b">res</span><span class="f">)</span>
<a name="332" /><span class="Maybe">     332:</span> <span class="f">{</span>
<a name="333" /><span class="Maybe">     333:</span>     <span class="m">return</span> <span class="b">kstrtouint_from_user</span><span class="f">(</span><span class="b">s</span><span class="f">,</span> <span class="b">count</span><span class="f">,</span> <span class="b">base</span><span class="f">,</span> <span class="b">res</span><span class="f">)</span><span class="f">;</span>
<a name="334" /><span class="Maybe">     334:</span> <span class="f">}</span>
<a name="335" /><span class="Maybe">     335:</span> 
<a name="336" /><span class="Maybe">     336:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <a href="cpu.c_macros_ref.html#_X19tdXN0X2NoZWNrXzE_"><span class="b">__must_check</span></a> <span class="b">kstrtos32_from_user</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <a href="cpu.c_macros_ref.html#_X191c2VyXzA_"><span class="b">__user</span></a> <span class="f">*</span><span class="b">s</span><span class="f">,</span> <span class="b">size_t</span> <span class="b">count</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">base</span><span class="f">,</span> <span class="b">s32</span> <span class="f">*</span><span class="b">res</span><span class="f">)</span>
<a name="337" /><span class="Maybe">     337:</span> <span class="f">{</span>
<a name="338" /><span class="Maybe">     338:</span>     <span class="m">return</span> <span class="b">kstrtoint_from_user</span><span class="f">(</span><span class="b">s</span><span class="f">,</span> <span class="b">count</span><span class="f">,</span> <span class="b">base</span><span class="f">,</span> <span class="b">res</span><span class="f">)</span><span class="f">;</span>
<a name="339" /><span class="Maybe">     339:</span> <span class="f">}</span>
<a name="340" /><span class="Maybe">     340:</span> 
<a name="341" /><span class="Maybe">     341:</span> <span class="k">/* Obsolete, do not use.  Use kstrto&lt;foo&gt; instead */</span>
<a name="342" /><span class="Maybe">     342:</span> 
<a name="343" /><span class="Maybe">     343:</span> <span class="m">extern</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">simple_strtoul</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="f">,</span><span class="m">char</span> <span class="f">*</span><span class="f">*</span><span class="f">,</span><span class="m">unsigned</span> <span class="m">int</span><span class="f">)</span><span class="f">;</span>
<a name="344" /><span class="Maybe">     344:</span> <span class="m">extern</span> <span class="m">long</span> <span class="b">simple_strtol</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="f">,</span><span class="m">char</span> <span class="f">*</span><span class="f">*</span><span class="f">,</span><span class="m">unsigned</span> <span class="m">int</span><span class="f">)</span><span class="f">;</span>
<a name="345" /><span class="Maybe">     345:</span> <span class="m">extern</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="m">long</span> <span class="b">simple_strtoull</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="f">,</span><span class="m">char</span> <span class="f">*</span><span class="f">*</span><span class="f">,</span><span class="m">unsigned</span> <span class="m">int</span><span class="f">)</span><span class="f">;</span>
<a name="346" /><span class="Maybe">     346:</span> <span class="m">extern</span> <span class="m">long</span> <span class="m">long</span> <span class="b">simple_strtoll</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="f">,</span><span class="m">char</span> <span class="f">*</span><span class="f">*</span><span class="f">,</span><span class="m">unsigned</span> <span class="m">int</span><span class="f">)</span><span class="f">;</span>
<a name="347" /><span class="Maybe">     347:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_c3RyaWN0X3N0cnRvdWxfMA__"><span class="b">strict_strtoul</span></a>    <span class="b">kstrtoul</span>
<a name="348" /><span class="Maybe">     348:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_c3RyaWN0X3N0cnRvbF8w"><span class="b">strict_strtol</span></a>    <span class="b">kstrtol</span>
<a name="349" /><span class="Maybe">     349:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_c3RyaWN0X3N0cnRvdWxsXzA_"><span class="b">strict_strtoull</span></a>    <span class="b">kstrtoull</span>
<a name="350" /><span class="Maybe">     350:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_c3RyaWN0X3N0cnRvbGxfMA__"><span class="b">strict_strtoll</span></a>    <span class="b">kstrtoll</span>
<a name="351" /><span class="Maybe">     351:</span> 
<a name="352" /><span class="Maybe">     352:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">num_to_str</span><span class="f">(</span><span class="m">char</span> <span class="f">*</span><span class="b">buf</span><span class="f">,</span> <span class="m">int</span> <span class="b">size</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="m">long</span> <span class="b">num</span><span class="f">)</span><span class="f">;</span>
<a name="353" /><span class="Maybe">     353:</span> 
<a name="354" /><span class="Maybe">     354:</span> <span class="k">/* lib/printf utilities */</span>
<a name="355" /><span class="Maybe">     355:</span> 
<a name="356" /><span class="Maybe">     356:</span> <span class="m">extern</span> <a href="cpu.c_macros_ref.html#_X19wcmludGZfMA__"><span class="b">__printf</span></a><span class="f">(</span><span class="c">2</span><span class="f">,</span> <span class="c">3</span><span class="f">)</span> <span class="m">int</span> <span class="b">sprintf</span><span class="f">(</span><span class="m">char</span> <span class="f">*</span><span class="b">buf</span><span class="f">,</span> <span class="m">const</span> <span class="m">char</span> <span class="f">*</span> <span class="b">fmt</span><span class="f">,</span> <span class="f">...</span><span class="f">)</span><span class="f">;</span>
<a name="357" /><span class="Maybe">     357:</span> <span class="m">extern</span> <a href="cpu.c_macros_ref.html#_X19wcmludGZfMA__"><span class="b">__printf</span></a><span class="f">(</span><span class="c">2</span><span class="f">,</span> <span class="c">0</span><span class="f">)</span> <span class="m">int</span> <span class="b">vsprintf</span><span class="f">(</span><span class="m">char</span> <span class="f">*</span><span class="b">buf</span><span class="f">,</span> <span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="f">,</span> <span class="b">va_list</span><span class="f">)</span><span class="f">;</span>
<a name="358" /><span class="Maybe">     358:</span> <span class="m">extern</span> <a href="cpu.c_macros_ref.html#_X19wcmludGZfMA__"><span class="b">__printf</span></a><span class="f">(</span><span class="c">3</span><span class="f">,</span> <span class="c">4</span><span class="f">)</span>
<a name="359" /><span class="Maybe">     359:</span> <span class="m">int</span> <span class="b">snprintf</span><span class="f">(</span><span class="m">char</span> <span class="f">*</span><span class="b">buf</span><span class="f">,</span> <span class="b">size_t</span> <span class="b">size</span><span class="f">,</span> <span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">fmt</span><span class="f">,</span> <span class="f">...</span><span class="f">)</span><span class="f">;</span>
<a name="360" /><span class="Maybe">     360:</span> <span class="m">extern</span> <a href="cpu.c_macros_ref.html#_X19wcmludGZfMA__"><span class="b">__printf</span></a><span class="f">(</span><span class="c">3</span><span class="f">,</span> <span class="c">0</span><span class="f">)</span>
<a name="361" /><span class="Maybe">     361:</span> <span class="m">int</span> <span class="b">vsnprintf</span><span class="f">(</span><span class="m">char</span> <span class="f">*</span><span class="b">buf</span><span class="f">,</span> <span class="b">size_t</span> <span class="b">size</span><span class="f">,</span> <span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">fmt</span><span class="f">,</span> <span class="b">va_list</span> <span class="b">args</span><span class="f">)</span><span class="f">;</span>
<a name="362" /><span class="Maybe">     362:</span> <span class="m">extern</span> <a href="cpu.c_macros_ref.html#_X19wcmludGZfMA__"><span class="b">__printf</span></a><span class="f">(</span><span class="c">3</span><span class="f">,</span> <span class="c">4</span><span class="f">)</span>
<a name="363" /><span class="Maybe">     363:</span> <span class="m">int</span> <span class="b">scnprintf</span><span class="f">(</span><span class="m">char</span> <span class="f">*</span><span class="b">buf</span><span class="f">,</span> <span class="b">size_t</span> <span class="b">size</span><span class="f">,</span> <span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">fmt</span><span class="f">,</span> <span class="f">...</span><span class="f">)</span><span class="f">;</span>
<a name="364" /><span class="Maybe">     364:</span> <span class="m">extern</span> <a href="cpu.c_macros_ref.html#_X19wcmludGZfMA__"><span class="b">__printf</span></a><span class="f">(</span><span class="c">3</span><span class="f">,</span> <span class="c">0</span><span class="f">)</span>
<a name="365" /><span class="Maybe">     365:</span> <span class="m">int</span> <span class="b">vscnprintf</span><span class="f">(</span><span class="m">char</span> <span class="f">*</span><span class="b">buf</span><span class="f">,</span> <span class="b">size_t</span> <span class="b">size</span><span class="f">,</span> <span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">fmt</span><span class="f">,</span> <span class="b">va_list</span> <span class="b">args</span><span class="f">)</span><span class="f">;</span>
<a name="366" /><span class="Maybe">     366:</span> <span class="m">extern</span> <a href="cpu.c_macros_ref.html#_X19wcmludGZfMA__"><span class="b">__printf</span></a><span class="f">(</span><span class="c">2</span><span class="f">,</span> <span class="c">3</span><span class="f">)</span>
<a name="367" /><span class="Maybe">     367:</span> <span class="m">char</span> <span class="f">*</span><span class="b">kasprintf</span><span class="f">(</span><span class="b">gfp_t</span> <span class="b">gfp</span><span class="f">,</span> <span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">fmt</span><span class="f">,</span> <span class="f">...</span><span class="f">)</span><span class="f">;</span>
<a name="368" /><span class="Maybe">     368:</span> <span class="m">extern</span> <span class="m">char</span> <span class="f">*</span><span class="b">kvasprintf</span><span class="f">(</span><span class="b">gfp_t</span> <span class="b">gfp</span><span class="f">,</span> <span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">fmt</span><span class="f">,</span> <span class="b">va_list</span> <span class="b">args</span><span class="f">)</span><span class="f">;</span>
<a name="369" /><span class="Maybe">     369:</span> 
<a name="370" /><span class="Maybe">     370:</span> <span class="m">extern</span> <a href="cpu.c_macros_ref.html#_X19zY2FuZl8w"><span class="b">__scanf</span></a><span class="f">(</span><span class="c">2</span><span class="f">,</span> <span class="c">3</span><span class="f">)</span>
<a name="371" /><span class="Maybe">     371:</span> <span class="m">int</span> <span class="b">sscanf</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="f">,</span> <span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="f">,</span> <span class="f">...</span><span class="f">)</span><span class="f">;</span>
<a name="372" /><span class="Maybe">     372:</span> <span class="m">extern</span> <a href="cpu.c_macros_ref.html#_X19zY2FuZl8w"><span class="b">__scanf</span></a><span class="f">(</span><span class="c">2</span><span class="f">,</span> <span class="c">0</span><span class="f">)</span>
<a name="373" /><span class="Maybe">     373:</span> <span class="m">int</span> <span class="b">vsscanf</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="f">,</span> <span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="f">,</span> <span class="b">va_list</span><span class="f">)</span><span class="f">;</span>
<a name="374" /><span class="Maybe">     374:</span> 
<a name="375" /><span class="Maybe">     375:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">get_option</span><span class="f">(</span><span class="m">char</span> <span class="f">*</span><span class="f">*</span><span class="b">str</span><span class="f">,</span> <span class="m">int</span> <span class="f">*</span><span class="b">pint</span><span class="f">)</span><span class="f">;</span>
<a name="376" /><span class="Maybe">     376:</span> <span class="m">extern</span> <span class="m">char</span> <span class="f">*</span><span class="b">get_options</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">str</span><span class="f">,</span> <span class="m">int</span> <span class="b">nints</span><span class="f">,</span> <span class="m">int</span> <span class="f">*</span><span class="b">ints</span><span class="f">)</span><span class="f">;</span>
<a name="377" /><span class="Maybe">     377:</span> <span class="m">extern</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="m">long</span> <span class="b">memparse</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">ptr</span><span class="f">,</span> <span class="m">char</span> <span class="f">*</span><span class="f">*</span><span class="b">retptr</span><span class="f">)</span><span class="f">;</span>
<a name="378" /><span class="Maybe">     378:</span> 
<a name="379" /><span class="Maybe">     379:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">core_kernel_text</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="b">addr</span><span class="f">)</span><span class="f">;</span>
<a name="380" /><span class="Maybe">     380:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">core_kernel_data</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="b">addr</span><span class="f">)</span><span class="f">;</span>
<a name="381" /><span class="Maybe">     381:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">__kernel_text_address</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="b">addr</span><span class="f">)</span><span class="f">;</span>
<a name="382" /><span class="Maybe">     382:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">kernel_text_address</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="b">addr</span><span class="f">)</span><span class="f">;</span>
<a name="383" /><span class="Maybe">     383:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">func_ptr_is_kernel_text</span><span class="f">(</span><span class="m">void</span> <span class="f">*</span><span class="b">ptr</span><span class="f">)</span><span class="f">;</span>
<a name="384" /><span class="Maybe">     384:</span> 
<a name="385" /><span class="Maybe">     385:</span> <span class="m">struct</span> <span class="b">pid</span><span class="f">;</span>
<a name="386" /><span class="Maybe">     386:</span> <span class="m">extern</span> <span class="m">struct</span> <span class="b">pid</span> <span class="f">*</span><span class="b">session_of_pgrp</span><span class="f">(</span><span class="m">struct</span> <span class="b">pid</span> <span class="f">*</span><span class="b">pgrp</span><span class="f">)</span><span class="f">;</span>
<a name="387" /><span class="Maybe">     387:</span> 
<a name="388" /><span class="Maybe">     388:</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">int_sqrt</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span><span class="f">)</span><span class="f">;</span>
<a name="389" /><span class="Maybe">     389:</span> 
<a name="390" /><span class="Maybe">     390:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">bust_spinlocks</span><span class="f">(</span><span class="m">int</span> <span class="b">yes</span><span class="f">)</span><span class="f">;</span>
<a name="391" /><span class="Maybe">     391:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">oops_in_progress</span><span class="f">;</span>        <span class="k">/* If set, an oops, panic(), BUG() or die() is in progress */</span>
<a name="392" /><span class="Maybe">     392:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">panic_timeout</span><span class="f">;</span>
<a name="393" /><span class="Maybe">     393:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">panic_on_oops</span><span class="f">;</span>
<a name="394" /><span class="Maybe">     394:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">panic_on_unrecovered_nmi</span><span class="f">;</span>
<a name="395" /><span class="Maybe">     395:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">panic_on_io_nmi</span><span class="f">;</span>
<a name="396" /><span class="Maybe">     396:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">sysctl_panic_on_stackoverflow</span><span class="f">;</span>
<a name="397" /><span class="Maybe">     397:</span> <span class="m">extern</span> <span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">print_tainted</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="398" /><span class="Maybe">     398:</span> <span class="m">enum</span> <span class="b">lockdep_ok</span> <span class="f">{</span>
<a name="399" /><span class="Maybe">     399:</span>     <span class="b">LOCKDEP_STILL_OK</span><span class="f">,</span>
<a name="400" /><span class="Maybe">     400:</span>     <span class="b">LOCKDEP_NOW_UNRELIABLE</span>
<a name="401" /><span class="Maybe">     401:</span> <span class="f">}</span><span class="f">;</span>
<a name="402" /><span class="Maybe">     402:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">add_taint</span><span class="f">(</span><span class="m">unsigned</span> <span class="b">flag</span><span class="f">,</span> <span class="m">enum</span> <span class="b">lockdep_ok</span><span class="f">)</span><span class="f">;</span>
<a name="403" /><span class="Maybe">     403:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">test_taint</span><span class="f">(</span><span class="m">unsigned</span> <span class="b">flag</span><span class="f">)</span><span class="f">;</span>
<a name="404" /><span class="Maybe">     404:</span> <span class="m">extern</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">get_taint</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="405" /><span class="Maybe">     405:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">root_mountflags</span><span class="f">;</span>
<a name="406" /><span class="Maybe">     406:</span> 
<a name="407" /><span class="Maybe">     407:</span> <span class="m">extern</span> <span class="m">bool</span> <span class="b">early_boot_irqs_disabled</span><span class="f">;</span>
<a name="408" /><span class="Maybe">     408:</span> 
<a name="409" /><span class="Maybe">     409:</span> <span class="k">/* Values used for system_state */</span>
<a name="410" /><span class="Maybe">     410:</span> <span class="m">extern</span> <span class="m">enum</span> <span class="b">system_states</span> <span class="f">{</span>
<a name="411" /><span class="Maybe">     411:</span>     <span class="b">SYSTEM_BOOTING</span><span class="f">,</span>
<a name="412" /><span class="Maybe">     412:</span>     <span class="b">SYSTEM_RUNNING</span><span class="f">,</span>
<a name="413" /><span class="Maybe">     413:</span>     <span class="b">SYSTEM_HALT</span><span class="f">,</span>
<a name="414" /><span class="Maybe">     414:</span>     <span class="b">SYSTEM_POWER_OFF</span><span class="f">,</span>
<a name="415" /><span class="Maybe">     415:</span>     <span class="b">SYSTEM_RESTART</span><span class="f">,</span>
<a name="416" /><span class="Maybe">     416:</span> <span class="f">}</span> <span class="b">system_state</span><span class="f">;</span>
<a name="417" /><span class="Maybe">     417:</span> 
<a name="418" /><span class="Maybe">     418:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_VEFJTlRfUFJPUFJJRVRBUllfTU9EVUxFXzA_"><span class="b">TAINT_PROPRIETARY_MODULE</span></a>    <span class="c">0</span>
<a name="419" /><span class="Maybe">     419:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_VEFJTlRfRk9SQ0VEX01PRFVMRV8w"><span class="b">TAINT_FORCED_MODULE</span></a>        <span class="c">1</span>
<a name="420" /><span class="Maybe">     420:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_VEFJTlRfVU5TQUZFX1NNUF8w"><span class="b">TAINT_UNSAFE_SMP</span></a>        <span class="c">2</span>
<a name="421" /><span class="Maybe">     421:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_VEFJTlRfRk9SQ0VEX1JNTU9EXzA_"><span class="b">TAINT_FORCED_RMMOD</span></a>        <span class="c">3</span>
<a name="422" /><span class="Maybe">     422:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_VEFJTlRfTUFDSElORV9DSEVDS18w"><span class="b">TAINT_MACHINE_CHECK</span></a>        <span class="c">4</span>
<a name="423" /><span class="Maybe">     423:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_VEFJTlRfQkFEX1BBR0VfMA__"><span class="b">TAINT_BAD_PAGE</span></a>            <span class="c">5</span>
<a name="424" /><span class="Maybe">     424:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_VEFJTlRfVVNFUl8w"><span class="b">TAINT_USER</span></a>            <span class="c">6</span>
<a name="425" /><span class="Maybe">     425:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_VEFJTlRfRElFXzA_"><span class="b">TAINT_DIE</span></a>            <span class="c">7</span>
<a name="426" /><span class="Maybe">     426:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_VEFJTlRfT1ZFUlJJRERFTl9BQ1BJX1RBQkxFXzA_"><span class="b">TAINT_OVERRIDDEN_ACPI_TABLE</span></a>    <span class="c">8</span>
<a name="427" /><span class="Maybe">     427:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_VEFJTlRfV0FSTl8w"><span class="b">TAINT_WARN</span></a>            <span class="c">9</span>
<a name="428" /><span class="Maybe">     428:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_VEFJTlRfQ1JBUF8w"><span class="b">TAINT_CRAP</span></a>            <span class="c">10</span>
<a name="429" /><span class="Maybe">     429:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_VEFJTlRfRklSTVdBUkVfV09SS0FST1VORF8w"><span class="b">TAINT_FIRMWARE_WORKAROUND</span></a>    <span class="c">11</span>
<a name="430" /><span class="Maybe">     430:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_VEFJTlRfT09UX01PRFVMRV8w"><span class="b">TAINT_OOT_MODULE</span></a>        <span class="c">12</span>
<a name="431" /><span class="Maybe">     431:</span> 
<a name="432" /><span class="Maybe">     432:</span> <span class="m">extern</span> <span class="m">const</span> <span class="m">char</span> <span class="b">hex_asc</span><span class="f">[</span><span class="f">]</span><span class="f">;</span>
<a name="433" /><span class="Maybe">     433:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_aGV4X2FzY19sb18w"><span class="b">hex_asc_lo</span></a><span class="f">(</span><span class="b">x</span><span class="f">)</span>    <span class="b">hex_asc</span><span class="f">[</span><span class="f">(</span><span class="f">(</span><span class="b">x</span><span class="f">)</span> <span class="f">&amp;</span> <span class="c">0x0f</span><span class="f">)</span><span class="f">]</span>
<a name="434" /><span class="Maybe">     434:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_aGV4X2FzY19oaV8w"><span class="b">hex_asc_hi</span></a><span class="f">(</span><span class="b">x</span><span class="f">)</span>    <span class="b">hex_asc</span><span class="f">[</span><span class="f">(</span><span class="f">(</span><span class="b">x</span><span class="f">)</span> <span class="f">&amp;</span> <span class="c">0xf0</span><span class="f">)</span> <span class="f">&gt;&gt;</span> <span class="c">4</span><span class="f">]</span>
<a name="435" /><span class="Maybe">     435:</span> 
<a name="436" /><span class="Maybe">     436:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">char</span> <span class="f">*</span><span class="b">hex_byte_pack</span><span class="f">(</span><span class="m">char</span> <span class="f">*</span><span class="b">buf</span><span class="f">,</span> <span class="b">u8</span> <span class="b">byte</span><span class="f">)</span>
<a name="437" /><span class="Maybe">     437:</span> <span class="f">{</span>
<a name="438" /><span class="Maybe">     438:</span>     <span class="f">*</span><span class="b">buf</span><span class="f">++</span> <span class="f">=</span> <a href="cpu.c_macros_ref.html#_aGV4X2FzY19oaV8w"><span class="b">hex_asc_hi</span></a><span class="f">(</span><span class="b">byte</span><span class="f">)</span><span class="f">;</span>
<a name="439" /><span class="Maybe">     439:</span>     <span class="f">*</span><span class="b">buf</span><span class="f">++</span> <span class="f">=</span> <a href="cpu.c_macros_ref.html#_aGV4X2FzY19sb18w"><span class="b">hex_asc_lo</span></a><span class="f">(</span><span class="b">byte</span><span class="f">)</span><span class="f">;</span>
<a name="440" /><span class="Maybe">     440:</span>     <span class="m">return</span> <span class="b">buf</span><span class="f">;</span>
<a name="441" /><span class="Maybe">     441:</span> <span class="f">}</span>
<a name="442" /><span class="Maybe">     442:</span> 
<a name="443" /><span class="Maybe">     443:</span> <span class="m">extern</span> <span class="m">const</span> <span class="m">char</span> <span class="b">hex_asc_upper</span><span class="f">[</span><span class="f">]</span><span class="f">;</span>
<a name="444" /><span class="Maybe">     444:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_aGV4X2FzY191cHBlcl9sb18w"><span class="b">hex_asc_upper_lo</span></a><span class="f">(</span><span class="b">x</span><span class="f">)</span>    <span class="b">hex_asc_upper</span><span class="f">[</span><span class="f">(</span><span class="f">(</span><span class="b">x</span><span class="f">)</span> <span class="f">&amp;</span> <span class="c">0x0f</span><span class="f">)</span><span class="f">]</span>
<a name="445" /><span class="Maybe">     445:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_aGV4X2FzY191cHBlcl9oaV8w"><span class="b">hex_asc_upper_hi</span></a><span class="f">(</span><span class="b">x</span><span class="f">)</span>    <span class="b">hex_asc_upper</span><span class="f">[</span><span class="f">(</span><span class="f">(</span><span class="b">x</span><span class="f">)</span> <span class="f">&amp;</span> <span class="c">0xf0</span><span class="f">)</span> <span class="f">&gt;&gt;</span> <span class="c">4</span><span class="f">]</span>
<a name="446" /><span class="Maybe">     446:</span> 
<a name="447" /><span class="Maybe">     447:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">char</span> <span class="f">*</span><span class="b">hex_byte_pack_upper</span><span class="f">(</span><span class="m">char</span> <span class="f">*</span><span class="b">buf</span><span class="f">,</span> <span class="b">u8</span> <span class="b">byte</span><span class="f">)</span>
<a name="448" /><span class="Maybe">     448:</span> <span class="f">{</span>
<a name="449" /><span class="Maybe">     449:</span>     <span class="f">*</span><span class="b">buf</span><span class="f">++</span> <span class="f">=</span> <a href="cpu.c_macros_ref.html#_aGV4X2FzY191cHBlcl9oaV8w"><span class="b">hex_asc_upper_hi</span></a><span class="f">(</span><span class="b">byte</span><span class="f">)</span><span class="f">;</span>
<a name="450" /><span class="Maybe">     450:</span>     <span class="f">*</span><span class="b">buf</span><span class="f">++</span> <span class="f">=</span> <a href="cpu.c_macros_ref.html#_aGV4X2FzY191cHBlcl9sb18w"><span class="b">hex_asc_upper_lo</span></a><span class="f">(</span><span class="b">byte</span><span class="f">)</span><span class="f">;</span>
<a name="451" /><span class="Maybe">     451:</span>     <span class="m">return</span> <span class="b">buf</span><span class="f">;</span>
<a name="452" /><span class="Maybe">     452:</span> <span class="f">}</span>
<a name="453" /><span class="Maybe">     453:</span> 
<a name="454" /><span class="Maybe">     454:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">char</span> <span class="f">*</span> <a href="cpu.c_macros_ref.html#_X19kZXByZWNhdGVkXzE_"><span class="b">__deprecated</span></a> <span class="b">pack_hex_byte</span><span class="f">(</span><span class="m">char</span> <span class="f">*</span><span class="b">buf</span><span class="f">,</span> <span class="b">u8</span> <span class="b">byte</span><span class="f">)</span>
<a name="455" /><span class="Maybe">     455:</span> <span class="f">{</span>
<a name="456" /><span class="Maybe">     456:</span>     <span class="m">return</span> <span class="b">hex_byte_pack</span><span class="f">(</span><span class="b">buf</span><span class="f">,</span> <span class="b">byte</span><span class="f">)</span><span class="f">;</span>
<a name="457" /><span class="Maybe">     457:</span> <span class="f">}</span>
<a name="458" /><span class="Maybe">     458:</span> 
<a name="459" /><span class="Maybe">     459:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">hex_to_bin</span><span class="f">(</span><span class="m">char</span> <span class="b">ch</span><span class="f">)</span><span class="f">;</span>
<a name="460" /><span class="Maybe">     460:</span> <span class="m">extern</span> <span class="m">int</span> <a href="cpu.c_macros_ref.html#_X19tdXN0X2NoZWNrXzE_"><span class="b">__must_check</span></a> <span class="b">hex2bin</span><span class="f">(</span><span class="b">u8</span> <span class="f">*</span><span class="b">dst</span><span class="f">,</span> <span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">src</span><span class="f">,</span> <span class="b">size_t</span> <span class="b">count</span><span class="f">)</span><span class="f">;</span>
<a name="461" /><span class="Maybe">     461:</span> 
<a name="462" /><span class="Maybe">     462:</span> <span class="m">int</span> <span class="b">mac_pton</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">s</span><span class="f">,</span> <span class="b">u8</span> <span class="f">*</span><span class="b">mac</span><span class="f">)</span><span class="f">;</span>
<a name="463" /><span class="Maybe">     463:</span> 
<a name="464" /><span class="Maybe">     464:</span> <span class="k">/*</span>
<a name="465" /><span class="Maybe">     465:</span> <span class="k"> * General tracing related utility functions - trace_printk(),</span>
<a name="466" /><span class="Maybe">     466:</span> <span class="k"> * tracing_on/tracing_off and tracing_start()/tracing_stop</span>
<a name="467" /><span class="Maybe">     467:</span> <span class="k"> *</span>
<a name="468" /><span class="Maybe">     468:</span> <span class="k"> * Use tracing_on/tracing_off when you want to quickly turn on or off</span>
<a name="469" /><span class="Maybe">     469:</span> <span class="k"> * tracing. It simply enables or disables the recording of the trace events.</span>
<a name="470" /><span class="Maybe">     470:</span> <span class="k"> * This also corresponds to the user space /sys/kernel/debug/tracing/tracing_on</span>
<a name="471" /><span class="Maybe">     471:</span> <span class="k"> * file, which gives a means for the kernel and userspace to interact.</span>
<a name="472" /><span class="Maybe">     472:</span> <span class="k"> * Place a tracing_off() in the kernel where you want tracing to end.</span>
<a name="473" /><span class="Maybe">     473:</span> <span class="k"> * From user space, examine the trace, and then echo 1 &gt; tracing_on</span>
<a name="474" /><span class="Maybe">     474:</span> <span class="k"> * to continue tracing.</span>
<a name="475" /><span class="Maybe">     475:</span> <span class="k"> *</span>
<a name="476" /><span class="Maybe">     476:</span> <span class="k"> * tracing_stop/tracing_start has slightly more overhead. It is used</span>
<a name="477" /><span class="Maybe">     477:</span> <span class="k"> * by things like suspend to ram where disabling the recording of the</span>
<a name="478" /><span class="Maybe">     478:</span> <span class="k"> * trace is not enough, but tracing must actually stop because things</span>
<a name="479" /><span class="Maybe">     479:</span> <span class="k"> * like calling smp_processor_id() may crash the system.</span>
<a name="480" /><span class="Maybe">     480:</span> <span class="k"> *</span>
<a name="481" /><span class="Maybe">     481:</span> <span class="k"> * Most likely, you want to use tracing_on/tracing_off.</span>
<a name="482" /><span class="Maybe">     482:</span> <span class="k"> */</span>
<a name="483" /><span class="Maybe">     483:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX1JJTkdfQlVGRkVSXzA_"><span class="b">CONFIG_RING_BUFFER</span></a>
<a name="484" /><span class="Maybe">     484:</span> <span class="k">/* trace_off_permanent stops recording with no way to bring it back */</span>
<a name="485" /><span class="Maybe">     485:</span> <span class="m">void</span> <span class="b">tracing_off_permanent</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="486" /><span class="False">     486:</span> <span class="f">#</span><span class="n">else</span>
<a name="487" /><span class="False">     487:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">tracing_off_permanent</span><span class="f">(</span><span class="m">void</span><span class="f">)</span> <span class="f">{</span> <span class="f">}</span>
<a name="488" /><span class="Maybe">     488:</span> <span class="f">#</span><span class="n">endif</span>
<a name="489" /><span class="Maybe">     489:</span> 
<a name="490" /><span class="Maybe">     490:</span> <span class="m">enum</span> <span class="b">ftrace_dump_mode</span> <span class="f">{</span>
<a name="491" /><span class="Maybe">     491:</span>     <span class="b">DUMP_NONE</span><span class="f">,</span>
<a name="492" /><span class="Maybe">     492:</span>     <span class="b">DUMP_ALL</span><span class="f">,</span>
<a name="493" /><span class="Maybe">     493:</span>     <span class="b">DUMP_ORIG</span><span class="f">,</span>
<a name="494" /><span class="Maybe">     494:</span> <span class="f">}</span><span class="f">;</span>
<a name="495" /><span class="Maybe">     495:</span> 
<a name="496" /><span class="Maybe">     496:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX1RSQUNJTkdfMA__"><span class="b">CONFIG_TRACING</span></a>
<a name="497" /><span class="Maybe">     497:</span> <span class="m">void</span> <span class="b">tracing_on</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="498" /><span class="Maybe">     498:</span> <span class="m">void</span> <span class="b">tracing_off</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="499" /><span class="Maybe">     499:</span> <span class="m">int</span> <span class="b">tracing_is_on</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="500" /><span class="Maybe">     500:</span> <span class="m">void</span> <span class="b">tracing_snapshot</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="501" /><span class="Maybe">     501:</span> <span class="m">void</span> <span class="b">tracing_snapshot_alloc</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="502" /><span class="Maybe">     502:</span> 
<a name="503" /><span class="Maybe">     503:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">tracing_start</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="504" /><span class="Maybe">     504:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">tracing_stop</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="505" /><span class="Maybe">     505:</span> 
<a name="506" /><span class="Maybe">     506:</span> <span class="m">static</span> <span class="m">inline</span> <a href="cpu.c_macros_ref.html#_X19wcmludGZfMA__"><span class="b">__printf</span></a><span class="f">(</span><span class="c">1</span><span class="f">,</span> <span class="c">2</span><span class="f">)</span>
<a name="507" /><span class="Maybe">     507:</span> <span class="m">void</span> <span class="b">____trace_printk_check_format</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">fmt</span><span class="f">,</span> <span class="f">...</span><span class="f">)</span>
<a name="508" /><span class="Maybe">     508:</span> <span class="f">{</span>
<a name="509" /><span class="Maybe">     509:</span> <span class="f">}</span>
<a name="510" /><span class="Maybe">     510:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X190cmFjZV9wcmludGtfY2hlY2tfZm9ybWF0XzA_"><span class="b">__trace_printk_check_format</span></a><span class="f">(</span><span class="b">fmt</span><span class="f">,</span> <span class="b">args</span><span class="f">...</span><span class="f">)</span>            \
<a name="511" /><span class="Maybe">     511:</span> <span class="m">do</span> <span class="f">{</span>                                    \
<a name="512" /><span class="Maybe">     512:</span>     <span class="m">if</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>                                \
<a name="513" /><span class="Maybe">     513:</span>         <span class="b">____trace_printk_check_format</span><span class="f">(</span><span class="b">fmt</span><span class="f">,</span> <span class="f">##</span><span class="b">args</span><span class="f">)</span><span class="f">;</span>        \
<a name="514" /><span class="Maybe">     514:</span> <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="515" /><span class="Maybe">     515:</span> 
<a name="516" /><span class="Maybe">     516:</span> <span class="k">/**</span>
<a name="517" /><span class="Maybe">     517:</span> <span class="k"> * trace_printk - printf formatting in the ftrace buffer</span>
<a name="518" /><span class="Maybe">     518:</span> <span class="k"> * @fmt: the printf format for printing</span>
<a name="519" /><span class="Maybe">     519:</span> <span class="k"> *</span>
<a name="520" /><span class="Maybe">     520:</span> <span class="k"> * Note: __trace_printk is an internal function for trace_printk and</span>
<a name="521" /><span class="Maybe">     521:</span> <span class="k"> *       the @ip is passed in via the trace_printk macro.</span>
<a name="522" /><span class="Maybe">     522:</span> <span class="k"> *</span>
<a name="523" /><span class="Maybe">     523:</span> <span class="k"> * This function allows a kernel developer to debug fast path sections</span>
<a name="524" /><span class="Maybe">     524:</span> <span class="k"> * that printk is not appropriate for. By scattering in various</span>
<a name="525" /><span class="Maybe">     525:</span> <span class="k"> * printk like tracing in the code, a developer can quickly see</span>
<a name="526" /><span class="Maybe">     526:</span> <span class="k"> * where problems are occurring.</span>
<a name="527" /><span class="Maybe">     527:</span> <span class="k"> *</span>
<a name="528" /><span class="Maybe">     528:</span> <span class="k"> * This is intended as a debugging tool for the developer only.</span>
<a name="529" /><span class="Maybe">     529:</span> <span class="k"> * Please refrain from leaving trace_printks scattered around in</span>
<a name="530" /><span class="Maybe">     530:</span> <span class="k"> * your code. (Extra memory is used for special buffers that are</span>
<a name="531" /><span class="Maybe">     531:</span> <span class="k"> * allocated when trace_printk() is used)</span>
<a name="532" /><span class="Maybe">     532:</span> <span class="k"> *</span>
<a name="533" /><span class="Maybe">     533:</span> <span class="k"> * A little optization trick is done here. If there&apos;s only one</span>
<a name="534" /><span class="Maybe">     534:</span> <span class="k"> * argument, there&apos;s no need to scan the string for printf formats.</span>
<a name="535" /><span class="Maybe">     535:</span> <span class="k"> * The trace_puts() will suffice. But how can we take advantage of</span>
<a name="536" /><span class="Maybe">     536:</span> <span class="k"> * using trace_puts() when trace_printk() has only one argument?</span>
<a name="537" /><span class="Maybe">     537:</span> <span class="k"> * By stringifying the args and checking the size we can tell</span>
<a name="538" /><span class="Maybe">     538:</span> <span class="k"> * whether or not there are args. __stringify((__VA_ARGS__)) will</span>
<a name="539" /><span class="Maybe">     539:</span> <span class="k"> * turn into &quot;()\0&quot; with a size of 3 when there are no args, anything</span>
<a name="540" /><span class="Maybe">     540:</span> <span class="k"> * else will be bigger. All we need to do is define a string to this,</span>
<a name="541" /><span class="Maybe">     541:</span> <span class="k"> * and then take its size and compare to 3. If it&apos;s bigger, use</span>
<a name="542" /><span class="Maybe">     542:</span> <span class="k"> * do_trace_printk() otherwise, optimize it to trace_puts(). Then just</span>
<a name="543" /><span class="Maybe">     543:</span> <span class="k"> * let gcc optimize the rest.</span>
<a name="544" /><span class="Maybe">     544:</span> <span class="k"> */</span>
<a name="545" /><span class="Maybe">     545:</span> 
<a name="546" /><span class="Maybe">     546:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_dHJhY2VfcHJpbnRrXzA_"><span class="b">trace_printk</span></a><span class="f">(</span><span class="b">fmt</span><span class="f">,</span> <span class="f">...</span><span class="f">)</span>                \
<a name="547" /><span class="Maybe">     547:</span> <span class="m">do</span> <span class="f">{</span>                            \
<a name="548" /><span class="Maybe">     548:</span>     <span class="m">char</span> <span class="b">_______STR</span><span class="f">[</span><span class="f">]</span> <span class="f">=</span> <a href="cpu.c_macros_ref.html#_X19zdHJpbmdpZnlfMA__"><span class="b">__stringify</span></a><span class="f">(</span><span class="f">(</span><span class="b">__VA_ARGS__</span><span class="f">)</span><span class="f">)</span><span class="f">;</span>    \
<a name="549" /><span class="Maybe">     549:</span>     <span class="m">if</span> <span class="f">(</span><span class="m">sizeof</span><span class="f">(</span><span class="b">_______STR</span><span class="f">)</span> <span class="f">&gt;</span> <span class="c">3</span><span class="f">)</span>            \
<a name="550" /><span class="Maybe">     550:</span>         <a href="cpu.c_macros_noref.html#_ZG9fdHJhY2VfcHJpbnRrXzA_"><span class="b">do_trace_printk</span></a><span class="f">(</span><span class="b">fmt</span><span class="f">,</span> <span class="f">##</span><span class="b">__VA_ARGS__</span><span class="f">)</span><span class="f">;</span>    \
<a name="551" /><span class="Maybe">     551:</span>     <span class="m">else</span>                        \
<a name="552" /><span class="Maybe">     552:</span>         <a href="cpu.c_macros_noref.html#_dHJhY2VfcHV0c18w"><span class="b">trace_puts</span></a><span class="f">(</span><span class="b">fmt</span><span class="f">)</span><span class="f">;</span>            \
<a name="553" /><span class="Maybe">     553:</span> <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="554" /><span class="Maybe">     554:</span> 
<a name="555" /><span class="Maybe">     555:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_ZG9fdHJhY2VfcHJpbnRrXzA_"><span class="b">do_trace_printk</span></a><span class="f">(</span><span class="b">fmt</span><span class="f">,</span> <span class="b">args</span><span class="f">...</span><span class="f">)</span>                    \
<a name="556" /><span class="Maybe">     556:</span> <span class="m">do</span> <span class="f">{</span>                                    \
<a name="557" /><span class="Maybe">     557:</span>     <span class="m">static</span> <span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">trace_printk_fmt</span>                \
<a name="558" /><span class="Maybe">     558:</span>         <span class="b">__attribute__</span><span class="f">(</span><span class="f">(</span><span class="b">section</span><span class="f">(</span><span class="e">&quot;__trace_printk_fmt&quot;</span><span class="f">)</span><span class="f">)</span><span class="f">)</span> <span class="f">=</span>    \
<a name="559" /><span class="Maybe">     559:</span>         <span class="b">__builtin_constant_p</span><span class="f">(</span><span class="b">fmt</span><span class="f">)</span> <span class="f">?</span> <span class="b">fmt</span> <span class="f">:</span> <a href="cpu.c_macros_ref.html#_TlVMTF8w"><span class="b">NULL</span></a><span class="f">;</span>            \
<a name="560" /><span class="Maybe">     560:</span>                                     \
<a name="561" /><span class="Maybe">     561:</span>     <a href="cpu.c_macros_noref.html#_X190cmFjZV9wcmludGtfY2hlY2tfZm9ybWF0XzA_"><span class="b">__trace_printk_check_format</span></a><span class="f">(</span><span class="b">fmt</span><span class="f">,</span> <span class="f">##</span><span class="b">args</span><span class="f">)</span><span class="f">;</span>            \
<a name="562" /><span class="Maybe">     562:</span>                                     \
<a name="563" /><span class="Maybe">     563:</span>     <span class="m">if</span> <span class="f">(</span><span class="b">__builtin_constant_p</span><span class="f">(</span><span class="b">fmt</span><span class="f">)</span><span class="f">)</span>                    \
<a name="564" /><span class="Maybe">     564:</span>         <span class="b">__trace_bprintk</span><span class="f">(</span><a href="cpu.c_macros_noref.html#_X1RISVNfSVBfXzA_"><span class="b">_THIS_IP_</span></a><span class="f">,</span> <span class="b">trace_printk_fmt</span><span class="f">,</span> <span class="f">##</span><span class="b">args</span><span class="f">)</span><span class="f">;</span>    \
<a name="565" /><span class="Maybe">     565:</span>     <span class="m">else</span>                                \
<a name="566" /><span class="Maybe">     566:</span>         <span class="b">__trace_printk</span><span class="f">(</span><a href="cpu.c_macros_noref.html#_X1RISVNfSVBfXzA_"><span class="b">_THIS_IP_</span></a><span class="f">,</span> <span class="b">fmt</span><span class="f">,</span> <span class="f">##</span><span class="b">args</span><span class="f">)</span><span class="f">;</span>            \
<a name="567" /><span class="Maybe">     567:</span> <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="568" /><span class="Maybe">     568:</span> 
<a name="569" /><span class="Maybe">     569:</span> <span class="m">extern</span> <a href="cpu.c_macros_ref.html#_X19wcmludGZfMA__"><span class="b">__printf</span></a><span class="f">(</span><span class="c">2</span><span class="f">,</span> <span class="c">3</span><span class="f">)</span>
<a name="570" /><span class="Maybe">     570:</span> <span class="m">int</span> <span class="b">__trace_bprintk</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="b">ip</span><span class="f">,</span> <span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">fmt</span><span class="f">,</span> <span class="f">...</span><span class="f">)</span><span class="f">;</span>
<a name="571" /><span class="Maybe">     571:</span> 
<a name="572" /><span class="Maybe">     572:</span> <span class="m">extern</span> <a href="cpu.c_macros_ref.html#_X19wcmludGZfMA__"><span class="b">__printf</span></a><span class="f">(</span><span class="c">2</span><span class="f">,</span> <span class="c">3</span><span class="f">)</span>
<a name="573" /><span class="Maybe">     573:</span> <span class="m">int</span> <span class="b">__trace_printk</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="b">ip</span><span class="f">,</span> <span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">fmt</span><span class="f">,</span> <span class="f">...</span><span class="f">)</span><span class="f">;</span>
<a name="574" /><span class="Maybe">     574:</span> 
<a name="575" /><span class="Maybe">     575:</span> <span class="k">/**</span>
<a name="576" /><span class="Maybe">     576:</span> <span class="k"> * trace_puts - write a string into the ftrace buffer</span>
<a name="577" /><span class="Maybe">     577:</span> <span class="k"> * @str: the string to record</span>
<a name="578" /><span class="Maybe">     578:</span> <span class="k"> *</span>
<a name="579" /><span class="Maybe">     579:</span> <span class="k"> * Note: __trace_bputs is an internal function for trace_puts and</span>
<a name="580" /><span class="Maybe">     580:</span> <span class="k"> *       the @ip is passed in via the trace_puts macro.</span>
<a name="581" /><span class="Maybe">     581:</span> <span class="k"> *</span>
<a name="582" /><span class="Maybe">     582:</span> <span class="k"> * This is similar to trace_printk() but is made for those really fast</span>
<a name="583" /><span class="Maybe">     583:</span> <span class="k"> * paths that a developer wants the least amount of &quot;Heisenbug&quot; affects,</span>
<a name="584" /><span class="Maybe">     584:</span> <span class="k"> * where the processing of the print format is still too much.</span>
<a name="585" /><span class="Maybe">     585:</span> <span class="k"> *</span>
<a name="586" /><span class="Maybe">     586:</span> <span class="k"> * This function allows a kernel developer to debug fast path sections</span>
<a name="587" /><span class="Maybe">     587:</span> <span class="k"> * that printk is not appropriate for. By scattering in various</span>
<a name="588" /><span class="Maybe">     588:</span> <span class="k"> * printk like tracing in the code, a developer can quickly see</span>
<a name="589" /><span class="Maybe">     589:</span> <span class="k"> * where problems are occurring.</span>
<a name="590" /><span class="Maybe">     590:</span> <span class="k"> *</span>
<a name="591" /><span class="Maybe">     591:</span> <span class="k"> * This is intended as a debugging tool for the developer only.</span>
<a name="592" /><span class="Maybe">     592:</span> <span class="k"> * Please refrain from leaving trace_puts scattered around in</span>
<a name="593" /><span class="Maybe">     593:</span> <span class="k"> * your code. (Extra memory is used for special buffers that are</span>
<a name="594" /><span class="Maybe">     594:</span> <span class="k"> * allocated when trace_puts() is used)</span>
<a name="595" /><span class="Maybe">     595:</span> <span class="k"> *</span>
<a name="596" /><span class="Maybe">     596:</span> <span class="k"> * Returns: 0 if nothing was written, positive # if string was.</span>
<a name="597" /><span class="Maybe">     597:</span> <span class="k"> *  (1 when __trace_bputs is used, strlen(str) when __trace_puts is used)</span>
<a name="598" /><span class="Maybe">     598:</span> <span class="k"> */</span>
<a name="599" /><span class="Maybe">     599:</span> 
<a name="600" /><span class="Maybe">     600:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_dHJhY2VfcHV0c18w"><span class="b">trace_puts</span></a><span class="f">(</span><span class="b">str</span><span class="f">)</span> <span class="f">(</span><span class="f">{</span>                        \
<a name="601" /><span class="Maybe">     601:</span>     <span class="m">static</span> <span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">trace_printk_fmt</span>                \
<a name="602" /><span class="Maybe">     602:</span>         <span class="b">__attribute__</span><span class="f">(</span><span class="f">(</span><span class="b">section</span><span class="f">(</span><span class="e">&quot;__trace_printk_fmt&quot;</span><span class="f">)</span><span class="f">)</span><span class="f">)</span> <span class="f">=</span>    \
<a name="603" /><span class="Maybe">     603:</span>         <span class="b">__builtin_constant_p</span><span class="f">(</span><span class="b">str</span><span class="f">)</span> <span class="f">?</span> <span class="b">str</span> <span class="f">:</span> <a href="cpu.c_macros_ref.html#_TlVMTF8w"><span class="b">NULL</span></a><span class="f">;</span>            \
<a name="604" /><span class="Maybe">     604:</span>                                     \
<a name="605" /><span class="Maybe">     605:</span>     <span class="m">if</span> <span class="f">(</span><span class="b">__builtin_constant_p</span><span class="f">(</span><span class="b">str</span><span class="f">)</span><span class="f">)</span>                    \
<a name="606" /><span class="Maybe">     606:</span>         <span class="b">__trace_bputs</span><span class="f">(</span><a href="cpu.c_macros_noref.html#_X1RISVNfSVBfXzA_"><span class="b">_THIS_IP_</span></a><span class="f">,</span> <span class="b">trace_printk_fmt</span><span class="f">)</span><span class="f">;</span>        \
<a name="607" /><span class="Maybe">     607:</span>     <span class="m">else</span>                                \
<a name="608" /><span class="Maybe">     608:</span>         <span class="b">__trace_puts</span><span class="f">(</span><a href="cpu.c_macros_noref.html#_X1RISVNfSVBfXzA_"><span class="b">_THIS_IP_</span></a><span class="f">,</span> <span class="b">str</span><span class="f">,</span> <span class="b">strlen</span><span class="f">(</span><span class="b">str</span><span class="f">)</span><span class="f">)</span><span class="f">;</span>        \
<a name="609" /><span class="Maybe">     609:</span> <span class="f">}</span><span class="f">)</span>
<a name="610" /><span class="Maybe">     610:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">__trace_bputs</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="b">ip</span><span class="f">,</span> <span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">str</span><span class="f">)</span><span class="f">;</span>
<a name="611" /><span class="Maybe">     611:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">__trace_puts</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="b">ip</span><span class="f">,</span> <span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">str</span><span class="f">,</span> <span class="m">int</span> <span class="b">size</span><span class="f">)</span><span class="f">;</span>
<a name="612" /><span class="Maybe">     612:</span> 
<a name="613" /><span class="Maybe">     613:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">trace_dump_stack</span><span class="f">(</span><span class="m">int</span> <span class="b">skip</span><span class="f">)</span><span class="f">;</span>
<a name="614" /><span class="Maybe">     614:</span> 
<a name="615" /><span class="Maybe">     615:</span> <span class="k">/*</span>
<a name="616" /><span class="Maybe">     616:</span> <span class="k"> * The double __builtin_constant_p is because gcc will give us an error</span>
<a name="617" /><span class="Maybe">     617:</span> <span class="k"> * if we try to allocate the static variable to fmt if it is not a</span>
<a name="618" /><span class="Maybe">     618:</span> <span class="k"> * constant. Even with the outer if statement.</span>
<a name="619" /><span class="Maybe">     619:</span> <span class="k"> */</span>
<a name="620" /><span class="Maybe">     620:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_ZnRyYWNlX3ZwcmludGtfMA__"><span class="b">ftrace_vprintk</span></a><span class="f">(</span><span class="b">fmt</span><span class="f">,</span> <span class="b">vargs</span><span class="f">)</span>                    \
<a name="621" /><span class="Maybe">     621:</span> <span class="m">do</span> <span class="f">{</span>                                    \
<a name="622" /><span class="Maybe">     622:</span>     <span class="m">if</span> <span class="f">(</span><span class="b">__builtin_constant_p</span><span class="f">(</span><span class="b">fmt</span><span class="f">)</span><span class="f">)</span> <span class="f">{</span>                \
<a name="623" /><span class="Maybe">     623:</span>         <span class="m">static</span> <span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">trace_printk_fmt</span>            \
<a name="624" /><span class="Maybe">     624:</span>           <span class="b">__attribute__</span><span class="f">(</span><span class="f">(</span><span class="b">section</span><span class="f">(</span><span class="e">&quot;__trace_printk_fmt&quot;</span><span class="f">)</span><span class="f">)</span><span class="f">)</span> <span class="f">=</span>    \
<a name="625" /><span class="Maybe">     625:</span>             <span class="b">__builtin_constant_p</span><span class="f">(</span><span class="b">fmt</span><span class="f">)</span> <span class="f">?</span> <span class="b">fmt</span> <span class="f">:</span> <a href="cpu.c_macros_ref.html#_TlVMTF8w"><span class="b">NULL</span></a><span class="f">;</span>        \
<a name="626" /><span class="Maybe">     626:</span>                                     \
<a name="627" /><span class="Maybe">     627:</span>         <span class="b">__ftrace_vbprintk</span><span class="f">(</span><a href="cpu.c_macros_noref.html#_X1RISVNfSVBfXzA_"><span class="b">_THIS_IP_</span></a><span class="f">,</span> <span class="b">trace_printk_fmt</span><span class="f">,</span> <span class="b">vargs</span><span class="f">)</span><span class="f">;</span>    \
<a name="628" /><span class="Maybe">     628:</span>     <span class="f">}</span> <span class="m">else</span>                                \
<a name="629" /><span class="Maybe">     629:</span>         <span class="b">__ftrace_vprintk</span><span class="f">(</span><a href="cpu.c_macros_noref.html#_X1RISVNfSVBfXzA_"><span class="b">_THIS_IP_</span></a><span class="f">,</span> <span class="b">fmt</span><span class="f">,</span> <span class="b">vargs</span><span class="f">)</span><span class="f">;</span>        \
<a name="630" /><span class="Maybe">     630:</span> <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="631" /><span class="Maybe">     631:</span> 
<a name="632" /><span class="Maybe">     632:</span> <span class="m">extern</span> <span class="m">int</span>
<a name="633" /><span class="Maybe">     633:</span> <span class="b">__ftrace_vbprintk</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="b">ip</span><span class="f">,</span> <span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">fmt</span><span class="f">,</span> <span class="b">va_list</span> <span class="b">ap</span><span class="f">)</span><span class="f">;</span>
<a name="634" /><span class="Maybe">     634:</span> 
<a name="635" /><span class="Maybe">     635:</span> <span class="m">extern</span> <span class="m">int</span>
<a name="636" /><span class="Maybe">     636:</span> <span class="b">__ftrace_vprintk</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="b">ip</span><span class="f">,</span> <span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">fmt</span><span class="f">,</span> <span class="b">va_list</span> <span class="b">ap</span><span class="f">)</span><span class="f">;</span>
<a name="637" /><span class="Maybe">     637:</span> 
<a name="638" /><span class="Maybe">     638:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">ftrace_dump</span><span class="f">(</span><span class="m">enum</span> <span class="b">ftrace_dump_mode</span> <span class="b">oops_dump_mode</span><span class="f">)</span><span class="f">;</span>
<a name="639" /><span class="False">     639:</span> <span class="f">#</span><span class="n">else</span>
<a name="640" /><span class="False">     640:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">tracing_start</span><span class="f">(</span><span class="m">void</span><span class="f">)</span> <span class="f">{</span> <span class="f">}</span>
<a name="641" /><span class="False">     641:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">tracing_stop</span><span class="f">(</span><span class="m">void</span><span class="f">)</span> <span class="f">{</span> <span class="f">}</span>
<a name="642" /><span class="False">     642:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">trace_dump_stack</span><span class="f">(</span><span class="m">int</span> <span class="b">skip</span><span class="f">)</span> <span class="f">{</span> <span class="f">}</span>
<a name="643" /><span class="False">     643:</span> 
<a name="644" /><span class="False">     644:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">tracing_on</span><span class="f">(</span><span class="m">void</span><span class="f">)</span> <span class="f">{</span> <span class="f">}</span>
<a name="645" /><span class="False">     645:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">tracing_off</span><span class="f">(</span><span class="m">void</span><span class="f">)</span> <span class="f">{</span> <span class="f">}</span>
<a name="646" /><span class="False">     646:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">tracing_is_on</span><span class="f">(</span><span class="m">void</span><span class="f">)</span> <span class="f">{</span> <span class="m">return</span> <span class="c">0</span><span class="f">;</span> <span class="f">}</span>
<a name="647" /><span class="False">     647:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">tracing_snapshot</span><span class="f">(</span><span class="m">void</span><span class="f">)</span> <span class="f">{</span> <span class="f">}</span>
<a name="648" /><span class="False">     648:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">tracing_snapshot_alloc</span><span class="f">(</span><span class="m">void</span><span class="f">)</span> <span class="f">{</span> <span class="f">}</span>
<a name="649" /><span class="False">     649:</span> 
<a name="650" /><span class="False">     650:</span> <span class="m">static</span> <span class="m">inline</span> <a href="cpu.c_macros_ref.html#_X19wcmludGZfMA__"><span class="b">__printf</span></a><span class="f">(</span><span class="c">1</span><span class="f">,</span> <span class="c">2</span><span class="f">)</span>
<a name="651" /><span class="False">     651:</span> <span class="m">int</span> <a href="cpu.c_macros_noref.html#_dHJhY2VfcHJpbnRrXzA_"><span class="b">trace_printk</span></a><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">fmt</span><span class="f">,</span> <span class="f">...</span><span class="f">)</span>
<a name="652" /><span class="False">     652:</span> <span class="f">{</span>
<a name="653" /><span class="False">     653:</span>     <span class="m">return</span> <span class="c">0</span><span class="f">;</span>
<a name="654" /><span class="False">     654:</span> <span class="f">}</span>
<a name="655" /><span class="False">     655:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span>
<a name="656" /><span class="False">     656:</span> <a href="cpu.c_macros_noref.html#_ZnRyYWNlX3ZwcmludGtfMA__"><span class="b">ftrace_vprintk</span></a><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">fmt</span><span class="f">,</span> <span class="b">va_list</span> <span class="b">ap</span><span class="f">)</span>
<a name="657" /><span class="False">     657:</span> <span class="f">{</span>
<a name="658" /><span class="False">     658:</span>     <span class="m">return</span> <span class="c">0</span><span class="f">;</span>
<a name="659" /><span class="False">     659:</span> <span class="f">}</span>
<a name="660" /><span class="False">     660:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">ftrace_dump</span><span class="f">(</span><span class="m">enum</span> <span class="b">ftrace_dump_mode</span> <span class="b">oops_dump_mode</span><span class="f">)</span> <span class="f">{</span> <span class="f">}</span>
<a name="661" /><span class="Maybe">     661:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* CONFIG_TRACING */</span>
<a name="662" /><span class="Maybe">     662:</span> 
<a name="663" /><span class="Maybe">     663:</span> <span class="k">/*</span>
<a name="664" /><span class="Maybe">     664:</span> <span class="k"> * min()/max()/clamp() macros that also do</span>
<a name="665" /><span class="Maybe">     665:</span> <span class="k"> * strict type-checking.. See the</span>
<a name="666" /><span class="Maybe">     666:</span> <span class="k"> * &quot;unnecessary&quot; pointer comparison.</span>
<a name="667" /><span class="Maybe">     667:</span> <span class="k"> */</span>
<a name="668" /><span class="Maybe">     668:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_bWluXzA_"><span class="b">min</span></a><span class="f">(</span><span class="b">x</span><span class="f">,</span> <span class="b">y</span><span class="f">)</span> <span class="f">(</span><span class="f">{</span>                \
<a name="669" /><span class="Maybe">     669:</span>     <span class="b">typeof</span><span class="f">(</span><span class="b">x</span><span class="f">)</span> <span class="b">_min1</span> <span class="f">=</span> <span class="f">(</span><span class="b">x</span><span class="f">)</span><span class="f">;</span>            \
<a name="670" /><span class="Maybe">     670:</span>     <span class="b">typeof</span><span class="f">(</span><span class="b">y</span><span class="f">)</span> <span class="b">_min2</span> <span class="f">=</span> <span class="f">(</span><span class="b">y</span><span class="f">)</span><span class="f">;</span>            \
<a name="671" /><span class="Maybe">     671:</span>     <span class="f">(</span><span class="m">void</span><span class="f">)</span> <span class="f">(</span><span class="f">&amp;</span><span class="b">_min1</span> <span class="f">==</span> <span class="f">&amp;</span><span class="b">_min2</span><span class="f">)</span><span class="f">;</span>        \
<a name="672" /><span class="Maybe">     672:</span>     <span class="b">_min1</span> <span class="f">&lt;</span> <span class="b">_min2</span> <span class="f">?</span> <span class="b">_min1</span> <span class="f">:</span> <span class="b">_min2</span><span class="f">;</span> <span class="f">}</span><span class="f">)</span>
<a name="673" /><span class="Maybe">     673:</span> 
<a name="674" /><span class="Maybe">     674:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_bWF4XzA_"><span class="b">max</span></a><span class="f">(</span><span class="b">x</span><span class="f">,</span> <span class="b">y</span><span class="f">)</span> <span class="f">(</span><span class="f">{</span>                \
<a name="675" /><span class="Maybe">     675:</span>     <span class="b">typeof</span><span class="f">(</span><span class="b">x</span><span class="f">)</span> <span class="b">_max1</span> <span class="f">=</span> <span class="f">(</span><span class="b">x</span><span class="f">)</span><span class="f">;</span>            \
<a name="676" /><span class="Maybe">     676:</span>     <span class="b">typeof</span><span class="f">(</span><span class="b">y</span><span class="f">)</span> <span class="b">_max2</span> <span class="f">=</span> <span class="f">(</span><span class="b">y</span><span class="f">)</span><span class="f">;</span>            \
<a name="677" /><span class="Maybe">     677:</span>     <span class="f">(</span><span class="m">void</span><span class="f">)</span> <span class="f">(</span><span class="f">&amp;</span><span class="b">_max1</span> <span class="f">==</span> <span class="f">&amp;</span><span class="b">_max2</span><span class="f">)</span><span class="f">;</span>        \
<a name="678" /><span class="Maybe">     678:</span>     <span class="b">_max1</span> <span class="f">&gt;</span> <span class="b">_max2</span> <span class="f">?</span> <span class="b">_max1</span> <span class="f">:</span> <span class="b">_max2</span><span class="f">;</span> <span class="f">}</span><span class="f">)</span>
<a name="679" /><span class="Maybe">     679:</span> 
<a name="680" /><span class="Maybe">     680:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_bWluM18w"><span class="b">min3</span></a><span class="f">(</span><span class="b">x</span><span class="f">,</span> <span class="b">y</span><span class="f">,</span> <span class="b">z</span><span class="f">)</span> <span class="f">(</span><span class="f">{</span>            \
<a name="681" /><span class="Maybe">     681:</span>     <span class="b">typeof</span><span class="f">(</span><span class="b">x</span><span class="f">)</span> <span class="b">_min1</span> <span class="f">=</span> <span class="f">(</span><span class="b">x</span><span class="f">)</span><span class="f">;</span>            \
<a name="682" /><span class="Maybe">     682:</span>     <span class="b">typeof</span><span class="f">(</span><span class="b">y</span><span class="f">)</span> <span class="b">_min2</span> <span class="f">=</span> <span class="f">(</span><span class="b">y</span><span class="f">)</span><span class="f">;</span>            \
<a name="683" /><span class="Maybe">     683:</span>     <span class="b">typeof</span><span class="f">(</span><span class="b">z</span><span class="f">)</span> <span class="b">_min3</span> <span class="f">=</span> <span class="f">(</span><span class="b">z</span><span class="f">)</span><span class="f">;</span>            \
<a name="684" /><span class="Maybe">     684:</span>     <span class="f">(</span><span class="m">void</span><span class="f">)</span> <span class="f">(</span><span class="f">&amp;</span><span class="b">_min1</span> <span class="f">==</span> <span class="f">&amp;</span><span class="b">_min2</span><span class="f">)</span><span class="f">;</span>        \
<a name="685" /><span class="Maybe">     685:</span>     <span class="f">(</span><span class="m">void</span><span class="f">)</span> <span class="f">(</span><span class="f">&amp;</span><span class="b">_min1</span> <span class="f">==</span> <span class="f">&amp;</span><span class="b">_min3</span><span class="f">)</span><span class="f">;</span>        \
<a name="686" /><span class="Maybe">     686:</span>     <span class="b">_min1</span> <span class="f">&lt;</span> <span class="b">_min2</span> <span class="f">?</span> <span class="f">(</span><span class="b">_min1</span> <span class="f">&lt;</span> <span class="b">_min3</span> <span class="f">?</span> <span class="b">_min1</span> <span class="f">:</span> <span class="b">_min3</span><span class="f">)</span> <span class="f">:</span> \
<a name="687" /><span class="Maybe">     687:</span>         <span class="f">(</span><span class="b">_min2</span> <span class="f">&lt;</span> <span class="b">_min3</span> <span class="f">?</span> <span class="b">_min2</span> <span class="f">:</span> <span class="b">_min3</span><span class="f">)</span><span class="f">;</span> <span class="f">}</span><span class="f">)</span>
<a name="688" /><span class="Maybe">     688:</span> 
<a name="689" /><span class="Maybe">     689:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_bWF4M18w"><span class="b">max3</span></a><span class="f">(</span><span class="b">x</span><span class="f">,</span> <span class="b">y</span><span class="f">,</span> <span class="b">z</span><span class="f">)</span> <span class="f">(</span><span class="f">{</span>            \
<a name="690" /><span class="Maybe">     690:</span>     <span class="b">typeof</span><span class="f">(</span><span class="b">x</span><span class="f">)</span> <span class="b">_max1</span> <span class="f">=</span> <span class="f">(</span><span class="b">x</span><span class="f">)</span><span class="f">;</span>            \
<a name="691" /><span class="Maybe">     691:</span>     <span class="b">typeof</span><span class="f">(</span><span class="b">y</span><span class="f">)</span> <span class="b">_max2</span> <span class="f">=</span> <span class="f">(</span><span class="b">y</span><span class="f">)</span><span class="f">;</span>            \
<a name="692" /><span class="Maybe">     692:</span>     <span class="b">typeof</span><span class="f">(</span><span class="b">z</span><span class="f">)</span> <span class="b">_max3</span> <span class="f">=</span> <span class="f">(</span><span class="b">z</span><span class="f">)</span><span class="f">;</span>            \
<a name="693" /><span class="Maybe">     693:</span>     <span class="f">(</span><span class="m">void</span><span class="f">)</span> <span class="f">(</span><span class="f">&amp;</span><span class="b">_max1</span> <span class="f">==</span> <span class="f">&amp;</span><span class="b">_max2</span><span class="f">)</span><span class="f">;</span>        \
<a name="694" /><span class="Maybe">     694:</span>     <span class="f">(</span><span class="m">void</span><span class="f">)</span> <span class="f">(</span><span class="f">&amp;</span><span class="b">_max1</span> <span class="f">==</span> <span class="f">&amp;</span><span class="b">_max3</span><span class="f">)</span><span class="f">;</span>        \
<a name="695" /><span class="Maybe">     695:</span>     <span class="b">_max1</span> <span class="f">&gt;</span> <span class="b">_max2</span> <span class="f">?</span> <span class="f">(</span><span class="b">_max1</span> <span class="f">&gt;</span> <span class="b">_max3</span> <span class="f">?</span> <span class="b">_max1</span> <span class="f">:</span> <span class="b">_max3</span><span class="f">)</span> <span class="f">:</span> \
<a name="696" /><span class="Maybe">     696:</span>         <span class="f">(</span><span class="b">_max2</span> <span class="f">&gt;</span> <span class="b">_max3</span> <span class="f">?</span> <span class="b">_max2</span> <span class="f">:</span> <span class="b">_max3</span><span class="f">)</span><span class="f">;</span> <span class="f">}</span><span class="f">)</span>
<a name="697" /><span class="Maybe">     697:</span> 
<a name="698" /><span class="Maybe">     698:</span> <span class="k">/**</span>
<a name="699" /><span class="Maybe">     699:</span> <span class="k"> * min_not_zero - return the minimum that is _not_ zero, unless both are zero</span>
<a name="700" /><span class="Maybe">     700:</span> <span class="k"> * @x: value1</span>
<a name="701" /><span class="Maybe">     701:</span> <span class="k"> * @y: value2</span>
<a name="702" /><span class="Maybe">     702:</span> <span class="k"> */</span>
<a name="703" /><span class="Maybe">     703:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_bWluX25vdF96ZXJvXzA_"><span class="b">min_not_zero</span></a><span class="f">(</span><span class="b">x</span><span class="f">,</span> <span class="b">y</span><span class="f">)</span> <span class="f">(</span><span class="f">{</span>            \
<a name="704" /><span class="Maybe">     704:</span>     <span class="b">typeof</span><span class="f">(</span><span class="b">x</span><span class="f">)</span> <span class="b">__x</span> <span class="f">=</span> <span class="f">(</span><span class="b">x</span><span class="f">)</span><span class="f">;</span>            \
<a name="705" /><span class="Maybe">     705:</span>     <span class="b">typeof</span><span class="f">(</span><span class="b">y</span><span class="f">)</span> <span class="b">__y</span> <span class="f">=</span> <span class="f">(</span><span class="b">y</span><span class="f">)</span><span class="f">;</span>            \
<a name="706" /><span class="Maybe">     706:</span>     <span class="b">__x</span> <span class="f">==</span> <span class="c">0</span> <span class="f">?</span> <span class="b">__y</span> <span class="f">:</span> <span class="f">(</span><span class="f">(</span><span class="b">__y</span> <span class="f">==</span> <span class="c">0</span><span class="f">)</span> <span class="f">?</span> <span class="b">__x</span> <span class="f">:</span> <a href="cpu.c_macros_noref.html#_bWluXzA_"><span class="b">min</span></a><span class="f">(</span><span class="b">__x</span><span class="f">,</span> <span class="b">__y</span><span class="f">)</span><span class="f">)</span><span class="f">;</span> <span class="f">}</span><span class="f">)</span>
<a name="707" /><span class="Maybe">     707:</span> 
<a name="708" /><span class="Maybe">     708:</span> <span class="k">/**</span>
<a name="709" /><span class="Maybe">     709:</span> <span class="k"> * clamp - return a value clamped to a given range with strict typechecking</span>
<a name="710" /><span class="Maybe">     710:</span> <span class="k"> * @val: current value</span>
<a name="711" /><span class="Maybe">     711:</span> <span class="k"> * @min: minimum allowable value</span>
<a name="712" /><span class="Maybe">     712:</span> <span class="k"> * @max: maximum allowable value</span>
<a name="713" /><span class="Maybe">     713:</span> <span class="k"> *</span>
<a name="714" /><span class="Maybe">     714:</span> <span class="k"> * This macro does strict typechecking of min/max to make sure they are of the</span>
<a name="715" /><span class="Maybe">     715:</span> <span class="k"> * same type as val.  See the unnecessary pointer comparisons.</span>
<a name="716" /><span class="Maybe">     716:</span> <span class="k"> */</span>
<a name="717" /><span class="Maybe">     717:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Y2xhbXBfMA__"><span class="b">clamp</span></a><span class="f">(</span><span class="b">val</span><span class="f">,</span> <a href="cpu.c_macros_noref.html#_bWluXzA_"><span class="b">min</span></a><span class="f">,</span> <a href="cpu.c_macros_ref.html#_bWF4XzA_"><span class="b">max</span></a><span class="f">)</span> <span class="f">(</span><span class="f">{</span>            \
<a name="718" /><span class="Maybe">     718:</span>     <span class="b">typeof</span><span class="f">(</span><span class="b">val</span><span class="f">)</span> <span class="b">__val</span> <span class="f">=</span> <span class="f">(</span><span class="b">val</span><span class="f">)</span><span class="f">;</span>        \
<a name="719" /><span class="Maybe">     719:</span>     <span class="b">typeof</span><span class="f">(</span><a href="cpu.c_macros_noref.html#_bWluXzA_"><span class="b">min</span></a><span class="f">)</span> <span class="b">__min</span> <span class="f">=</span> <span class="f">(</span><a href="cpu.c_macros_noref.html#_bWluXzA_"><span class="b">min</span></a><span class="f">)</span><span class="f">;</span>        \
<a name="720" /><span class="Maybe">     720:</span>     <span class="b">typeof</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_bWF4XzA_"><span class="b">max</span></a><span class="f">)</span> <span class="b">__max</span> <span class="f">=</span> <span class="f">(</span><a href="cpu.c_macros_ref.html#_bWF4XzA_"><span class="b">max</span></a><span class="f">)</span><span class="f">;</span>        \
<a name="721" /><span class="Maybe">     721:</span>     <span class="f">(</span><span class="m">void</span><span class="f">)</span> <span class="f">(</span><span class="f">&amp;</span><span class="b">__val</span> <span class="f">==</span> <span class="f">&amp;</span><span class="b">__min</span><span class="f">)</span><span class="f">;</span>        \
<a name="722" /><span class="Maybe">     722:</span>     <span class="f">(</span><span class="m">void</span><span class="f">)</span> <span class="f">(</span><span class="f">&amp;</span><span class="b">__val</span> <span class="f">==</span> <span class="f">&amp;</span><span class="b">__max</span><span class="f">)</span><span class="f">;</span>        \
<a name="723" /><span class="Maybe">     723:</span>     <span class="b">__val</span> <span class="f">=</span> <span class="b">__val</span> <span class="f">&lt;</span> <span class="b">__min</span> <span class="f">?</span> <span class="b">__min</span><span class="f">:</span> <span class="b">__val</span><span class="f">;</span>    \
<a name="724" /><span class="Maybe">     724:</span>     <span class="b">__val</span> <span class="f">&gt;</span> <span class="b">__max</span> <span class="f">?</span> <span class="b">__max</span><span class="f">:</span> <span class="b">__val</span><span class="f">;</span> <span class="f">}</span><span class="f">)</span>
<a name="725" /><span class="Maybe">     725:</span> 
<a name="726" /><span class="Maybe">     726:</span> <span class="k">/*</span>
<a name="727" /><span class="Maybe">     727:</span> <span class="k"> * ..and if you can&apos;t take the strict</span>
<a name="728" /><span class="Maybe">     728:</span> <span class="k"> * types, you can specify one yourself.</span>
<a name="729" /><span class="Maybe">     729:</span> <span class="k"> *</span>
<a name="730" /><span class="Maybe">     730:</span> <span class="k"> * Or not use min/max/clamp at all, of course.</span>
<a name="731" /><span class="Maybe">     731:</span> <span class="k"> */</span>
<a name="732" /><span class="Maybe">     732:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_bWluX3RfMA__"><span class="b">min_t</span></a><span class="f">(</span><span class="b">type</span><span class="f">,</span> <span class="b">x</span><span class="f">,</span> <span class="b">y</span><span class="f">)</span> <span class="f">(</span><span class="f">{</span>            \
<a name="733" /><span class="Maybe">     733:</span>     <span class="b">type</span> <span class="b">__min1</span> <span class="f">=</span> <span class="f">(</span><span class="b">x</span><span class="f">)</span><span class="f">;</span>            \
<a name="734" /><span class="Maybe">     734:</span>     <span class="b">type</span> <span class="b">__min2</span> <span class="f">=</span> <span class="f">(</span><span class="b">y</span><span class="f">)</span><span class="f">;</span>            \
<a name="735" /><span class="Maybe">     735:</span>     <span class="b">__min1</span> <span class="f">&lt;</span> <span class="b">__min2</span> <span class="f">?</span> <span class="b">__min1</span><span class="f">:</span> <span class="b">__min2</span><span class="f">;</span> <span class="f">}</span><span class="f">)</span>
<a name="736" /><span class="Maybe">     736:</span> 
<a name="737" /><span class="Maybe">     737:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_bWF4X3RfMA__"><span class="b">max_t</span></a><span class="f">(</span><span class="b">type</span><span class="f">,</span> <span class="b">x</span><span class="f">,</span> <span class="b">y</span><span class="f">)</span> <span class="f">(</span><span class="f">{</span>            \
<a name="738" /><span class="Maybe">     738:</span>     <span class="b">type</span> <span class="b">__max1</span> <span class="f">=</span> <span class="f">(</span><span class="b">x</span><span class="f">)</span><span class="f">;</span>            \
<a name="739" /><span class="Maybe">     739:</span>     <span class="b">type</span> <span class="b">__max2</span> <span class="f">=</span> <span class="f">(</span><span class="b">y</span><span class="f">)</span><span class="f">;</span>            \
<a name="740" /><span class="Maybe">     740:</span>     <span class="b">__max1</span> <span class="f">&gt;</span> <span class="b">__max2</span> <span class="f">?</span> <span class="b">__max1</span><span class="f">:</span> <span class="b">__max2</span><span class="f">;</span> <span class="f">}</span><span class="f">)</span>
<a name="741" /><span class="Maybe">     741:</span> 
<a name="742" /><span class="Maybe">     742:</span> <span class="k">/**</span>
<a name="743" /><span class="Maybe">     743:</span> <span class="k"> * clamp_t - return a value clamped to a given range using a given type</span>
<a name="744" /><span class="Maybe">     744:</span> <span class="k"> * @type: the type of variable to use</span>
<a name="745" /><span class="Maybe">     745:</span> <span class="k"> * @val: current value</span>
<a name="746" /><span class="Maybe">     746:</span> <span class="k"> * @min: minimum allowable value</span>
<a name="747" /><span class="Maybe">     747:</span> <span class="k"> * @max: maximum allowable value</span>
<a name="748" /><span class="Maybe">     748:</span> <span class="k"> *</span>
<a name="749" /><span class="Maybe">     749:</span> <span class="k"> * This macro does no typechecking and uses temporary variables of type</span>
<a name="750" /><span class="Maybe">     750:</span> <span class="k"> * &apos;type&apos; to make all the comparisons.</span>
<a name="751" /><span class="Maybe">     751:</span> <span class="k"> */</span>
<a name="752" /><span class="Maybe">     752:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Y2xhbXBfdF8w"><span class="b">clamp_t</span></a><span class="f">(</span><span class="b">type</span><span class="f">,</span> <span class="b">val</span><span class="f">,</span> <a href="cpu.c_macros_noref.html#_bWluXzA_"><span class="b">min</span></a><span class="f">,</span> <a href="cpu.c_macros_ref.html#_bWF4XzA_"><span class="b">max</span></a><span class="f">)</span> <span class="f">(</span><span class="f">{</span>        \
<a name="753" /><span class="Maybe">     753:</span>     <span class="b">type</span> <span class="b">__val</span> <span class="f">=</span> <span class="f">(</span><span class="b">val</span><span class="f">)</span><span class="f">;</span>            \
<a name="754" /><span class="Maybe">     754:</span>     <span class="b">type</span> <span class="b">__min</span> <span class="f">=</span> <span class="f">(</span><a href="cpu.c_macros_noref.html#_bWluXzA_"><span class="b">min</span></a><span class="f">)</span><span class="f">;</span>            \
<a name="755" /><span class="Maybe">     755:</span>     <span class="b">type</span> <span class="b">__max</span> <span class="f">=</span> <span class="f">(</span><a href="cpu.c_macros_ref.html#_bWF4XzA_"><span class="b">max</span></a><span class="f">)</span><span class="f">;</span>            \
<a name="756" /><span class="Maybe">     756:</span>     <span class="b">__val</span> <span class="f">=</span> <span class="b">__val</span> <span class="f">&lt;</span> <span class="b">__min</span> <span class="f">?</span> <span class="b">__min</span><span class="f">:</span> <span class="b">__val</span><span class="f">;</span>    \
<a name="757" /><span class="Maybe">     757:</span>     <span class="b">__val</span> <span class="f">&gt;</span> <span class="b">__max</span> <span class="f">?</span> <span class="b">__max</span><span class="f">:</span> <span class="b">__val</span><span class="f">;</span> <span class="f">}</span><span class="f">)</span>
<a name="758" /><span class="Maybe">     758:</span> 
<a name="759" /><span class="Maybe">     759:</span> <span class="k">/**</span>
<a name="760" /><span class="Maybe">     760:</span> <span class="k"> * clamp_val - return a value clamped to a given range using val&apos;s type</span>
<a name="761" /><span class="Maybe">     761:</span> <span class="k"> * @val: current value</span>
<a name="762" /><span class="Maybe">     762:</span> <span class="k"> * @min: minimum allowable value</span>
<a name="763" /><span class="Maybe">     763:</span> <span class="k"> * @max: maximum allowable value</span>
<a name="764" /><span class="Maybe">     764:</span> <span class="k"> *</span>
<a name="765" /><span class="Maybe">     765:</span> <span class="k"> * This macro does no typechecking and uses temporary variables of whatever</span>
<a name="766" /><span class="Maybe">     766:</span> <span class="k"> * type the input argument &apos;val&apos; is.  This is useful when val is an unsigned</span>
<a name="767" /><span class="Maybe">     767:</span> <span class="k"> * type and min and max are literals that will otherwise be assigned a signed</span>
<a name="768" /><span class="Maybe">     768:</span> <span class="k"> * integer type.</span>
<a name="769" /><span class="Maybe">     769:</span> <span class="k"> */</span>
<a name="770" /><span class="Maybe">     770:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Y2xhbXBfdmFsXzA_"><span class="b">clamp_val</span></a><span class="f">(</span><span class="b">val</span><span class="f">,</span> <a href="cpu.c_macros_noref.html#_bWluXzA_"><span class="b">min</span></a><span class="f">,</span> <a href="cpu.c_macros_ref.html#_bWF4XzA_"><span class="b">max</span></a><span class="f">)</span> <span class="f">(</span><span class="f">{</span>        \
<a name="771" /><span class="Maybe">     771:</span>     <span class="b">typeof</span><span class="f">(</span><span class="b">val</span><span class="f">)</span> <span class="b">__val</span> <span class="f">=</span> <span class="f">(</span><span class="b">val</span><span class="f">)</span><span class="f">;</span>        \
<a name="772" /><span class="Maybe">     772:</span>     <span class="b">typeof</span><span class="f">(</span><span class="b">val</span><span class="f">)</span> <span class="b">__min</span> <span class="f">=</span> <span class="f">(</span><a href="cpu.c_macros_noref.html#_bWluXzA_"><span class="b">min</span></a><span class="f">)</span><span class="f">;</span>        \
<a name="773" /><span class="Maybe">     773:</span>     <span class="b">typeof</span><span class="f">(</span><span class="b">val</span><span class="f">)</span> <span class="b">__max</span> <span class="f">=</span> <span class="f">(</span><a href="cpu.c_macros_ref.html#_bWF4XzA_"><span class="b">max</span></a><span class="f">)</span><span class="f">;</span>        \
<a name="774" /><span class="Maybe">     774:</span>     <span class="b">__val</span> <span class="f">=</span> <span class="b">__val</span> <span class="f">&lt;</span> <span class="b">__min</span> <span class="f">?</span> <span class="b">__min</span><span class="f">:</span> <span class="b">__val</span><span class="f">;</span>    \
<a name="775" /><span class="Maybe">     775:</span>     <span class="b">__val</span> <span class="f">&gt;</span> <span class="b">__max</span> <span class="f">?</span> <span class="b">__max</span><span class="f">:</span> <span class="b">__val</span><span class="f">;</span> <span class="f">}</span><span class="f">)</span>
<a name="776" /><span class="Maybe">     776:</span> 
<a name="777" /><span class="Maybe">     777:</span> 
<a name="778" /><span class="Maybe">     778:</span> <span class="k">/*</span>
<a name="779" /><span class="Maybe">     779:</span> <span class="k"> * swap - swap value of @a and @b</span>
<a name="780" /><span class="Maybe">     780:</span> <span class="k"> */</span>
<a name="781" /><span class="Maybe">     781:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_c3dhcF8w"><span class="b">swap</span></a><span class="f">(</span><span class="b">a</span><span class="f">,</span> <span class="b">b</span><span class="f">)</span> \
<a name="782" /><span class="Maybe">     782:</span>     <span class="m">do</span> <span class="f">{</span> <span class="b">typeof</span><span class="f">(</span><span class="b">a</span><span class="f">)</span> <span class="b">__tmp</span> <span class="f">=</span> <span class="f">(</span><span class="b">a</span><span class="f">)</span><span class="f">;</span> <span class="f">(</span><span class="b">a</span><span class="f">)</span> <span class="f">=</span> <span class="f">(</span><span class="b">b</span><span class="f">)</span><span class="f">;</span> <span class="f">(</span><span class="b">b</span><span class="f">)</span> <span class="f">=</span> <span class="b">__tmp</span><span class="f">;</span> <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="783" /><span class="Maybe">     783:</span> 
<a name="784" /><span class="Maybe">     784:</span> <span class="k">/**</span>
<a name="785" /><span class="Maybe">     785:</span> <span class="k"> * container_of - cast a member of a structure out to the containing structure</span>
<a name="786" /><span class="Maybe">     786:</span> <span class="k"> * @ptr:    the pointer to the member.</span>
<a name="787" /><span class="Maybe">     787:</span> <span class="k"> * @type:    the type of the container struct this is embedded in.</span>
<a name="788" /><span class="Maybe">     788:</span> <span class="k"> * @member:    the name of the member within the struct.</span>
<a name="789" /><span class="Maybe">     789:</span> <span class="k"> *</span>
<a name="790" /><span class="Maybe">     790:</span> <span class="k"> */</span>
<a name="791" /><span class="Maybe">     791:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_Y29udGFpbmVyX29mXzA_"><span class="b">container_of</span></a><span class="f">(</span><span class="b">ptr</span><span class="f">,</span> <span class="b">type</span><span class="f">,</span> <span class="b">member</span><span class="f">)</span> <span class="f">(</span><span class="f">{</span>            \
<a name="792" /><span class="Maybe">     792:</span>     <span class="m">const</span> <span class="b">typeof</span><span class="f">(</span> <span class="f">(</span><span class="f">(</span><span class="b">type</span> <span class="f">*</span><span class="f">)</span><span class="c">0</span><span class="f">)</span><span class="f">-&gt;</span><span class="b">member</span> <span class="f">)</span> <span class="f">*</span><span class="b">__mptr</span> <span class="f">=</span> <span class="f">(</span><span class="b">ptr</span><span class="f">)</span><span class="f">;</span>    \
<a name="793" /><span class="Maybe">     793:</span>     <span class="f">(</span><span class="b">type</span> <span class="f">*</span><span class="f">)</span><span class="f">(</span> <span class="f">(</span><span class="m">char</span> <span class="f">*</span><span class="f">)</span><span class="b">__mptr</span> <span class="f">-</span> <a href="cpu.c_macros_ref.html#_b2Zmc2V0b2ZfMA__"><span class="b">offsetof</span></a><span class="f">(</span><span class="b">type</span><span class="f">,</span><span class="b">member</span><span class="f">)</span> <span class="f">)</span><span class="f">;</span><span class="f">}</span><span class="f">)</span>
<a name="794" /><span class="Maybe">     794:</span> 
<a name="795" /><span class="Maybe">     795:</span> <span class="k">/* Trap pasters of __FUNCTION__ at compile-time */</span>
<a name="796" /><span class="Maybe">     796:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X19GVU5DVElPTl9fXzA_"><span class="b">__FUNCTION__</span></a> <span class="f">(</span><span class="b">__func__</span><span class="f">)</span>
<a name="797" /><span class="Maybe">     797:</span> 
<a name="798" /><span class="Maybe">     798:</span> <span class="k">/* Rebuild everything on CONFIG_FTRACE_MCOUNT_RECORD */</span>
<a name="799" /><span class="Maybe">     799:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX0ZUUkFDRV9NQ09VTlRfUkVDT1JEXzA_"><span class="b">CONFIG_FTRACE_MCOUNT_RECORD</span></a>
<a name="800" /><span class="Maybe">     800:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_noref.html#_UkVCVUlMRF9EVUVfVE9fRlRSQUNFX01DT1VOVF9SRUNPUkRfMA__"><span class="b">REBUILD_DUE_TO_FTRACE_MCOUNT_RECORD</span></a>
<a name="801" /><span class="Maybe">     801:</span> <span class="f">#</span><span class="n">endif</span>
<a name="802" /><span class="Maybe">     802:</span> 
<a name="803" /><span class="True">     803:</span> <span class="f">#</span><span class="n">endif</span>
<a name="804" /><span class="True">     804:</span> </pre>
  </body>
</html>
